並列(mpiベース)C++コード用にboost::unit_testを使用していくつかのテストを作成したいと思います。テストフレームワークの使用に関して、いくつかの基本的な経験があります。私にとって、並列コードを使用する場合の主な問題は、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 に答える