使用googletest立即为多个测试模块运行单元测试

nop*_*lk1 6 c++ unit-testing googletest

我正在开发一个包含50多个库和可执行文件的大型C++项目.我开始为每个模块添加googletest测试.我读到谷歌建议将测试放在可执行文件而不是库中,以使生活更轻松.为每个单独的组件创建一个单独的可执行文件我将获得50多个测试可执行文件,并且为了一次性运行它们,我需要创建一个外部脚本,它还需要将它们的输出组合到一个单独的脚本中.这是推荐的事情吗?

或者我应该为每个单独模块的测试创建一个库,并将所有这些库链接到单个测试可执行文件?但是,对单个模块运行测试变得不那么方便了.我需要建立所有的测试,并指定通过gtest_filter标志,主要测试的可执行文件,测试应该在这个时候被执行.

这真的有助于我了解其他人如何做到这一点以及这里的最佳做法是什么.

谢谢

oli*_*ver 2

[...]并且为了一次运行它们,我需要创建一个外部脚本,该脚本还需要将它们的输出合并为一个。

也许实际上没有必要将输出合并到一个文件中。例如,使用 Jenkins,您可以为 Google 测试输出文件指定通配符模式。

因此,如果您实际上只想在 Jenkins(或 Hudson 或您使用的任何 CI 工具)中查看 Google 测试结果,这可能是一个可能的解决方案:

您可以从一个简单的脚本(甚至从 Make 规则)运行所有测试可执行文件,参数后跟--gtest_output=xml:目录名(即以斜杠结尾)。然后,每个测试可执行文件都会将自己的 XML 文件写入该目录,然后您可以配置 CI 工具以读取该目录中的所有文件。