使用Boost :: Test进行并行代码

时间:2012-04-11 12:53:59

标签: c++ unit-testing boost mpi

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

1 个答案:

答案 0 :(得分:2)

Boost Test具有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来运行测试套件。