2

我们这里有一个相当大的 C++ 控制台应用程序,现在应该通过 Googletest 进行单元测试。

我认为将单元测试和测试执行存储在一个单独的项目中是个好主意。两个项目都位于同一个解决方案中。由于被测应用程序被编译为可执行文件而不是静态库,因此我对如何从测试项目中的单元测试中引用实现代码有些不知所措。

我不想将所有代码文件作为现有项目放入测试项目中,将现有可执行文件拆分为静态库层和相应的“包装”可执行文件也需要大量工作。

长话短说:任何好的想法如何通过使用单独的测试项目来测试现有的 C++ 可执行项目?:)

让问题更难解决:我必须使用 VS 2008 atm。

4

2 回答 2

2

我能想到的一种可能性是将主项目中的所有源作为链接添加到单元测试项目中:

Visual Studio - 如何使用相同的源创建两个项目

第二种选择是在主项目中使用后期操作,并将主项目或其一部分从命令行编译到可以链接到单元测试项目的库中。这样,一个“构建”操作将生成一个 exe 和一个 dll/lib 文件。

第三个选项,以某种方式结合上述两个选项:在 VS 之外管理单元测试项目 - 从构建脚本(简单的批处理文件或 scons、make、ant 等)编译主项目的源代码和测试的源代码,以及从命令行执行。

于 2013-08-15T09:51:13.083 回答
1

我想你会对

它基本上说你不要接触你的主项目,添加一个构建后操作,将你的 obj 文件聚合到一个静态 lib 文件中。然后你可以将你的测试项目与这个静态库链接起来。

在我看来,它有很多优点,比如你不修改你的主项目,测试项目将永远是最新的,......

于 2013-11-05T13:37:59.527 回答