我们有 10 多个 Google 测试可执行文件,它们总共提供了 5000 多个测试用例。
到目前为止,我们的 CTest 配置使用的add_test
命令导致每个测试可执行文件从 CTest 的角度来看都是一个测试。
最近,我们使用GoogleTest
模块将add_test
命令替换为gtest_discover_tests
命令。这样,所有单独的测试用例现在都对 CTest 可见。现在,超过 5000 个测试用例中的每一个都是 CTest 中的一个单独测试。
这很好地增强了并行运行(一台强大的机器运行的测试用例比我们拥有的测试可执行文件多得多)并允许我们使用 CTest 命令行界面来过滤测试用例等,从而抽象出所使用的测试框架。
但是,我们遇到了 Valgrind 运行的主要障碍!现在每个单独的测试用例都单独运行,导致 Valgrind 机器被设置和拆卸超过 5000 次。整个套房的时间从大约 10 分钟增加到近 2 小时,这是不可接受的。
现在,我想知道是否有任何方法可以通过仅调用一次可执行文件来使 CTest 从同一个可执行文件批量运行测试。我们会为 Valgrind 运行而不是普通运行这样做。恐怕没有办法,尤其是它可能需要GoogleTest
模块以某种方式解释如何做到这一点。但也许有人已经遇到过类似的问题并以某种方式解决了?
我知道解决方法是跳过 Valgrind 运行的 CTest。只需获取测试可执行文件并在 Valgrind 下“手动”运行它们。可行的,也可能以自动化方式(因此测试可执行文件的列表以某种方式“查询”,可能带有--show-only
参数ctest
,而不是硬编码)。但它使界面(命令行、输出等)不太一致。