我们这里有一个非常大的C ++控制台应用程序,现在应该通过Googletest进行单元测试。
我认为将单元测试和测试执行存储在单独的项目中是个好主意。两个项目都在同一个解决方案中。 由于被测试的应用程序被编译为可执行文件而不是静态库,我对如何从测试项目中的单元测试中引用实现代码感到有些不知所措。
我不想将所有代码文件作为现有项目放入测试项目中,将现有可执行文件拆分为静态库层和相应的“包装”可执行文件也是很多工作。
长话短说:如何通过使用单独的测试项目来测试现有C ++可执行项目的任何好主意? :)
要使问题更难:我必须使用VS 2008 atm。
答案 0 :(得分:2)
我能想到的一种可能性是将主项目中的所有资源添加到单元测试项目作为链接:
Visual Studio - how to create two projects using the same sources
第二个选项是在主项目中使用后期操作,并将主项目或其中的一部分从命令行编译到可以链接到单元测试项目的库中。这样一个“构建”动作就会产生一个exe和一个dll / lib文件。
第三个选项,以某种方式组合上面的两个选项:管理VS之外的单元测试项目 - 从构建脚本(简单批处理文件或scons,make,ant等)编译主项目的源代码测试并从命令行执行。
答案 1 :(得分:1)
我认为你会受到启发
它基本上表示您不接触主项目,添加将obj文件聚合到静态lib文件中的post构建操作。 然后,您可以将测试项目与此静态库链接。
在我看来,它提供了许多优点,比如你不修改你的主项目,测试项目总是最新的,...