我想用 boost::unit_test 为我的并行(基于 mpi)C++ 代码创建一些测试。我有一些使用测试框架的基本经验。对我来说,主要问题是,在处理并行代码时,将 MPI::Init 放在哪里,以便首先调用它。在我创建的测试套件中,没有主要功能。此外,当某些断言在现有等级的子集上失败时,Boost::Test 是否正确存在(相对于 mpi)?
问问题
1082 次
1 回答
3
Boost Test 具有夹具支持,它允许您按测试用例、测试套件或全局执行设置/清理。听起来你应该把调用MPI::Init
放在全局夹具中。
struct MPIFixture {
MPIFixture() { MPI::Init(); }
~MPIFixture() { /* I bet there's a deinit you should call */ }
};
BOOST_GLOBAL_FIXTURE(MPIFixture);
如果您在使用它时遇到问题,或者如果您在提供自己的main
功能的框架中工作,那么您可以#define BOOST_TEST_NO_MAIN
在包含 Boost 标头之前。然后你可以调用boost::unit_test::unit_test_main
自己来运行你的测试套件。
于 2012-04-11T13:59:01.377 回答