有没有办法并行运行C++单元测试测试?

Bap*_*cht 11 c++ concurrency multithreading unit-testing boost-test

我现在使用Boost测试很长时间了,最​​终我的测试运行得太慢了.由于每个测试都是高度并行的,我希望它们与我的所有内核同时运行.

有没有办法使用Boost测试库?我没有找到任何解决方案.我试着看一下如何编写自定义测试运行器,但我没有太多关于这一点的文档:(

如果没有办法,有人知道一个好的C++测试框架来实现这个目标吗?我当时认为Google Test会完成这项工作,但显然它也无法并行运行测试.即使框架具有比其他更知名的框架更少的功能,它也不是问题,我只需要简单的断言和多线程执行.

谢谢

Fra*_*ser 15

你可以使用CTest.

CTest是CMake(构建系统生成器)附带的测试驱动程序,因此您需要使用CMake使用现有文件和测试来创建构建系统,这样您就可以使用CTest来运行测试可执行文件.

我没有亲自使用Boake.Test与CMake(我们使用GoogleTest),但这个问题进一步详细介绍了这个过程.

在CMakeLists文件中添加测试后,可以使用CTest的-j参数来指定并行运行的作业数.


Dmi*_*sov 9

谷歌在gtest文档中暗示的是测试分片 - 让多台机器只使用命令行参数和环境变量来运行测试.您可以在分离的进程中的一台计算机上运行它们,在这些进程中可以适当地设置GTEST_SHARD_INDEX和GTEST_TOTAL_SHARDS环境变量.

原则上,没有什么阻止您使用不同的过滤参数(Boost.test,gtest)启动测试可执行文件的多个进程

2014年更新:https://github.com/google/gtest-parallel