繁体   English   中英

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

[英]Is there a way to run C++ Unit Tests tests in parallel?

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

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

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

谢谢

你可以使用CTest

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

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

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

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

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

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

将套件拆分为由多个较小的集合组成,每个集合都使用单独的二进制文件启动,并根据所有这些集合将.PHONY目标测试添加到构建系统。 运行为(假设您正在使用make) make -jN test

鉴于开放问题列表上的第三个要点当前是线程安全的,我不相信有一种方法可以告诉Boost测试在多个线程中运行测试。

相反,你需要找到一个外部的测试运行 ,支持并行运行测试(我希望通过这样的工作fork荷兰国际集团的新子进程)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM