c++ - 使用 googletest 一次为多个测试模块运行单元测试

标签 c++ unit-testing googletest

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

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

如果能听听其他人是如何做到这一点的,以及这里的最佳实践是什么,那真的对我有帮助。

谢谢

最佳答案

[...] and in order to run them all at once I would need to create an external script which would also need to combine their output to a single one.

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

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

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

关于c++ - 使用 googletest 一次为多个测试模块运行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20164254/

相关文章:

c++ - 避免泄漏 C++ 类中的外部类型

c++ - 如何为自定义 QLabel 实现 setWordWrap(True)?

unit-testing - Boost 测试与 Google 测试框架

C++:如何对 scoped_ptr 进行单元测试?

c# - 什么是好的、免费的 C# 单元测试覆盖工具?

c++ - GoogleTest 测试夹具说明

c++ - C 字符串数组初始化 - 这是可变的吗?

c++ - interval_map codomain 中的选择

c++ - gmock 忽略 "interesting"函数调用

ios - 使用 Xcode 7.3/8 在 iOS 上进行 GTest