メディア ファイルをテストするための静的テスト セットアップとして作成された BOOST TEST コードをいくつか使用しました。ただし、テストするメディア ファイルの数は時間の経過とともに変化する可能性があるため、テスト セットアップを動的にする必要があります。つまり、ある日には 3 つのファイルがあり、翌日には 15 のファイルがテストされる可能性があります。
現在のセットアップでは、いくつかの BOOST_AUTO_TEST_SUITE を使用して静的ツリー構造を構築しています。私の問題は、テスト ツリーで、2 つの test_suite の TestSuiteD1 と TestSuiteD2 をテスト ツリーに追加して、テスト ツリーを実行する必要があることです。動的テストでは、その場所に 2 つの test_case しか追加できないため、このツリー要素の下にさらに test_case (TestCase1 - TestCase3) を追加することはできません。以下の ::make_test_case の ::make_test_suite バージョンをインターネットで検索しましたが、うまくいきませんでした:
static boost::unit_test::ut_detail::auto_test_unit_registrar TestSuiteD1_registrar0 (boost::unit_test::make_test_case(&fTestSuiteD1_invoker , "TestSuiteD1" ), boost::unit_test::ut_detail::auto_tc_exp_fail::instance()->value() );
私がやりたいことを示し、test_case の代わりに test_suite を追加できるかどうかのフィードバックを得るために、いくつかのサンプル コードを以下に追加しました。
class MyTestSuite : public TestFixture1 {
public:
static void TestCase1() { //Some test };
static void TestCase2() { //Some test };
static void TestCase3() { //Some test };
test_suite* TestThis(string a, string b, string d)
test_suite* tsE = BOOST_TEST_SUITE( "TestSuiteE" );
tsE->add( BOOST_TEST_CASE( &TestCase1 ) );
tsE->add( BOOST_TEST_CASE( &TestCase2 ) );
tsE->add( BOOST_TEST_CASE( &TestCase3 ) );
};
};
BOOST_AUTO_TEST_SUITE( TestSuiteA );
BOOST_FIXTURE_TEST_SUITE( TestSuiteB , TestFixture1 );
BOOST_AUTO_TEST_SUITE( TestSuiteC );
BOOST_AUTO_TEST_SUITE( TestSuiteD );
static test_unit* TestSuiteD1_invoker (void) {
MyTestSuite MyTS;
MyTS.TestThis("a" , "b" , "D1" );
return 0;
}
struct TestSuiteD1_id {};
static boost::unit_test::ut_detail::auto_test_unit_registrar
TestSuiteD1_registrar0 ( boost::unit_test
::make_test_case(&fTestSuiteD1_invoker , "TestSuiteD1" ),
boost::unit_test::ut_detail::auto_tc_exp_fail<TestSuiteD1_id
>::instance()->value() );
static test_unit* TestSuiteD2_invoker (void) {
MyTestSuite MyTS;
MyTS.TestThis("a" , "b" , "D2" );
return 0;
}
struct TestSuiteD2_id {};
static boost::unit_test::ut_detail::auto_test_unit_registrar TestSuiteD2_registrar0
( boost::unit_test::make_test_case(&fTestSuiteD2_invoker , "TestSuiteD2" ),
boost::unit_test::ut_detail::auto_tc_exp_fail<TestSuiteD2_id
>::instance()->value() );
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_SUITE_END()