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

对并行代码使用Boost::Test < P>我想用Boo::UNITYA测试为我的并行(MPI)C++代码创建一些测试。我有一些使用测试框架的基本经验。对于我来说,在处理并行代码时,主要的问题是将MPI::Init放在哪里,以便首先调用它。在我创建的测试套件中,没有主功能。此外,当某些断言在现有列组的子集上失败时,Boost::Test是否正确存在(相对于mpi)?,c++,unit-testing,boost,mpi,C++,Unit Testing,Boost,Mpi,Boost Test有,它允许您针对每个测试用例、测试套件或全局执行设置/清理。听起来您应该在全局fixture中调用MPI::Init struct MPIFixture { MPIFixture() { MPI::Init(); } ~MPIFixture() { /* I bet there's a deinit you should call */ } }; BOOST_GLOBAL_FIXTURE(MPIFixture); 如果您在使用它时遇到困难,或者如果您在提供

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

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

BOOST_GLOBAL_FIXTURE(MPIFixture);

如果您在使用它时遇到困难,或者如果您在提供自己的
main
函数的框架中工作,那么您可以在包含BOOST头之前定义BOOST\u TEST\u NO\u main。然后您可以自己调用
boost::unit\u test::unit\u test\u main来运行测试套件。

fixture不起作用,因为MPI::Init需要命令行参数。你的第二个建议解决了这个问题!对我来说,这篇文章在这方面也很有用。实际上,您可以通过framework::master\u test\u suite()接口访问全局fixture中的命令行参数。