Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 有没有办法运行C++;并行的单元测试?_C++_Multithreading_Unit Testing_Concurrency_Boost Test - Fatal编程技术网

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

C++ 有没有办法运行C++;并行的单元测试?,c++,multithreading,unit-testing,concurrency,boost-test,C++,Multithreading,Unit Testing,Concurrency,Boost Test,我使用Boost测试已经很长一段时间了,结果我的测试运行得太慢了。由于每个测试都是高度并行的,所以我希望它们与我的所有内核同时运行 有没有一种方法可以使用Boost测试库来实现这一点?我没有找到任何解决办法。我试图了解如何编写自定义测试运行程序,但在这一点上我没有太多文档:( 如果没有办法,有人知道一个好的C++测试框架来实现这个目标吗?我当时以为谷歌测试会做这项工作,但是显然它也不能并行运行测试。即使框架比其他更为著名的框架具有更少的特性,它也不是问题,我只需要简单断言和多线程执行。p> 谢谢

我使用Boost测试已经很长一段时间了,结果我的测试运行得太慢了。由于每个测试都是高度并行的,所以我希望它们与我的所有内核同时运行

有没有一种方法可以使用Boost测试库来实现这一点?我没有找到任何解决办法。我试图了解如何编写自定义测试运行程序,但在这一点上我没有太多文档:(

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

你可以用这个

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

我个人没有使用CMake的Boost.Test(我们使用GoogleTest),但更详细地介绍了这个过程


一旦在CmakeList文件中添加了测试,您就可以利用来指定并行运行的作业数量。

鉴于当前的第三个要点是线程安全,我认为没有办法告诉Boost test在多个线程中运行测试


相反,您需要找到一种支持并行运行测试的方法(我希望通过
fork
ing关闭新进程,这种方法可以起作用)

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


2014年更新:

将套件拆分为多个较小的集合,每个集合使用单独的二进制文件启动,并根据所有集合将.PHONY target test添加到构建系统中。以运行方式运行(假设您使用make)make-jN test

这是一个好主意,但问题是我必须创建尽可能多的可执行测试,我更喜欢自动化程度更高的测试。@Baptistewich-您可以让一个启动器将测试名称作为命令行参数(如Boost.test),这太棒了:)即使它有点凌乱,而且我不得不对cmake文件进行一些更改,它仍然可以工作!谢谢