在Visual Studio 2012中单元测试exe中的C++代码时阻力最小的路径

Gaz*_*zoo 10 c++ unit-testing visual-studio-2012

我在这里需要一些圣人的建议.长话短说,我正在重建 - 对我来说 - 相对复杂的应用程序,包含大约7000行代码.当我创建应用程序的第一次迭代时遇到了许多问题,在我看来,测试驱动的开发可能只是票证.

我很高兴看到Visual Studio 2012现在原生支持C++中的TDD,所以我继续尽可能多地阅读.不幸的是,Vs2012相当新,我觉得文档有点缺乏.但这有点不合时宜.我主要依赖于MSDN网站上的以下指南:

http://msdn.microsoft.com/en-us/library/hh419385.aspx#objectRef

它相当清楚地表明,如果要测试的代码是作为.exe构建的,那么前进的方法是创建一个单独的测试项目并链接输出对象文件.我猜他们的意思是对象文件?或者可能不是?

我真的有点困惑,我需要链接多少.obj.起初我以为我需要链接每个相当乏味的obj文件.

如果有人有这方面的经验,也许还可以推荐使用哪些宏或类似的捷径,以使这个过程尽可能轻松,我会非常感激!

Ste*_*eve 6

这取决于您如何构建解决方案.我喜欢构建我的解决方案的方式是有三个项目.

  • 一个包含源代码的.lib项目.
  • 与.lib链接的可执行项目.这就要求进入在该.LIB main()通话
  • 与.lib链接的测试项目(exe).

使用此结构,您可以使用该部分中的Add New Reference...按钮,并将Common Properties为您排序引用(除了包含在路径中的路径C++\General\Additional include directories).

如果您不想重构项目,可以告诉链接器每个obj文件(Linker\Input\Additional dependencies).如果您要测试很多类,这可能是大量的.obj文件.不幸的是,如果您使用预编译的标头,则可能会出现问题.

如果可以,我建议重组项目.