Boost单元测试可以是多线程的吗

Can Boost unit testing be multithreaded?

本文关键字:多线程 单元测试 Boost      更新时间:2023-10-16

我的单元测试需要运行大量BOOST_CHECK_CLOSE调用,这需要很长时间(据我所知,在一个线程上)。我希望能够沿着以下路线做一些事情:

#pragma omp parallel for num_threads(8)
for (int i=0; i<ARRAY_SIZE; i++) {
    BOOST_CHECK_CLOSE(array1[i], array2[i], tolerance);
}

然而,当我尝试这种方法时,似乎会发生一些我无法控制的非常严重的内存损坏。分段故障最常见,但有时会出现这种情况:

*** stack smashing detected ***

有没有人有一些经验,可以分享一个好的方法来实现我的预期结果?我相信每个人都会很高兴他们的测试运行得很快!

不能如这里所述(第3项)

http://www.boost.org/doc/libs/1_57_0/libs/test/doc/html/open-issues.html

请参阅此处的完整讨论:

有没有一种方法可以并行运行C++单元测试?

解决方法:用一些本地逻辑替换boost调用,收集所有故障并在最后报告。

由于您关心性能,因此在这样一个紧密的循环中调用BOOST_CHECK机制可能是一个次优的想法。