在一个大型项目中有成千上万个测试,其中一些测试需要多分钟才能完成。当按顺序执行时,整个测试集需要超过一个小时才能完成。通过并行执行测试可以缩短测试时间。
据我所知,目前没有直接从googletest/mock中执行并行测试的方法,例如--async
选项。或者我错了吗?
一种解决方案是确定可以并行运行的测试,并编写一个脚本,在单独的作业中启动每个测试,即:
./test --gtest_filter=TestSet.test1 &
./test --gtest_filter=TestSet.test2 &
...
但是这将需要额外的维护工作,并在测试代码和执行之间引入另一个“层”。我希望有一种更方便的解决方案。例如,可以给TEST和TEST_F宏添加后缀并引入TEST_ASYNC、TEST_F_ASYNC。使用TEST_ASYNC定义的测试将由独立线程执行,同时启动。
如何实现这一点?还是有其他解决方案吗?