5

並列(mpiベース)C++コード用にboost::unit_testを使用していくつかのテストを作成したいと思います。テストフレームワークの使用に関して、いくつかの基本的な経験があります。私にとって、並列コードを使用する場合の主な問題は、MPI::Initをどこに配置するかです。最初に呼び出されます。私が作成したテストスイートには、主な機能はありません。さらに、既存のランクのサブセットで一部のアサーションが失敗した場合、Boost :: Testは(mpiに関して)正しく存在しますか?

4

1 に答える 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 に答える