我想用 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/