c++ - 使用 Boost::Test 并行代码

标签 c++ unit-testing boost mpi

我想用 boost::unit_test 为我的并行(基于 mpi)C++ 代码创建一些测试。我对使用测试框架有一些基本的经验。对我来说,主要的问题是,在使用并行代码时,将 MPI::Init 放在哪里,以便首先调用它。在我创建的测试套件中没有主要功能。此外,当某些断言在现有等级的子集上失败时,Boost::Test 是否正确存在(相对于 mpi)?

最佳答案

Boost 测试有 fixture support ,它允许您针对每个测试用例、测试套件或全局执行设置/清理。听起来您应该将对 MPI::Init 的调用放在全局固定装置中。

struct MPIFixture {
    MPIFixture() { MPI::Init(); }
    ~MPIFixture() { /* I bet there's a deinit you should call */ }
};

BOOST_GLOBAL_FIXTURE(MPIFixture);

如果您在使用它时遇到问题,或者如果您在一个提供自己的 main 函数的框架中工作,那么您可以在包含 Boost 之前#define BOOST_TEST_NO_MAIN标题。然后您可以自己调用 boost::unit_test::unit_test_main 来运行您的测试套件。

关于c++ - 使用 Boost::Test 并行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10106304/

相关文章:

c++ - 将数组转换为函数返回中的指针

c# - 如何使用流利断言断言集合中的所有项目?

c# - 使用私有(private) setter 测试属性

c++ - 为什么无论类型如何,类中的引用变量总是占用 4 个字节? (在 32 位系统上)

c++ - 运行时链接库全局变量是否在加载了 dlopen 的插件之间共享?

c++ - 是否可以通过网络发送数组?

C# UnitTests 模拟文件 ReadAllBytes 抛出 System.IO.FileNotFoundException

c++ - 在 visual c++ 的 Release 模式下使用的 boost 调试库

c++ - 崩溃 : terminate called after throwing an instance of 'std::system_error' what(): Resource deadlock avoided

boost::numeric::odeint 对于刚性系统,如果我们无法获得解析雅可比矩阵怎么办?