- 写测试
- 检查测试(运行)
- 编写生产代码
- 检查测试(运行)
- 清理生产代码
- 检查测试(运行)
就我而言,这只有在您的开发解决方案允许您非常快速地在生产代码和测试代码之间切换以及对特定生产代码部分执行测试的情况下才有可能。
现在,尽管存在许多C ++单元测试框架(我正在使用Bost.Test atm。)看来,实际上并没有任何像样的(对于本机C ++而言)Visual Studio(插件)解决方案能够使TDD周期可承受,与使用的框架无关。
“可以承受”表示只需单击一下即可对某个cpp文件运行测试,而无需手动设置单独的测试项目等。“可以承受”还表示一个简单的测试开始(链接!)并且运行非常快。
那么,有哪些工具(插件)和技术可以使使用Visual Studio进行本机C ++开发的TDD周期成为可能?
注意:我可以使用免费或“商业”工具。
请:没有框架建议。(除非框架具有专用的Visual Studio插件,并且您要推荐该插件。)
编辑说明:到目前为止的答案提供了有关如何将单元测试框架集成到Visual Studio中的链接。这些资源或多或少描述了如何获取UT框架进行编译以及如何运行您的第一个测试。这不是这个问题的意思。我认为要真正有效地工作,将单元测试放在手动维护(!)中,将vcproj与您的生产类分开会增加太多开销,以致TDD“不可能”。据我所知,您没有为Java或C#事物添加额外的“项目”以启用单元测试和TDD,这是有充分的理由的。这应该 只要有正确的工具,C ++就可以实现,但似乎(这个问题是关于)TDD / C ++ / VS的工具很少。
到处搜寻,我发现一个工具VisualAssert似乎朝着正确的方向发展。但是,afaiks,它似乎并未得到广泛使用(与CppUnit,Boost.Test等相比)。
编辑:我想在此问题的上下文中添加评论。我认为它很好地概括了问题的一部分:(Billy ONeal的评论)
Visual Studio不使用用户可以合理编辑的“构建脚本”。一个项目产生一个二进制文件。而且,Java具有Java从不构建完整二进制文件的特性-您构建的二进制文件只是类文件的ZIP。因此,可以分别手动编译然后JAR一起编译(使用例如7z)。C ++和C#都实际上链接了它们的二进制文件,因此,一般来讲,您不能编写这样的脚本。最接近的是分别编译所有内容,然后进行两个链接(一个用于生产,一个用于测试)。
7z
)。C ++和C#都实际上链接了它们的二进制文件,因此,一般来讲,您不能编写这样的脚本。最接近的是分别编译所有内容,然后进行两个链接(一个用于生产,一个用于测试)。
As far as I am aware, you do not add extra "projects" to a Java or C# thing to enable Unit Tests and TDD,
<-我认为这是不正确的。通常,您在C#中也有多个项目。您不想将测试代码发送到生产二进制文件中。