我已经接管了一些 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 版本,但没有运气:
静态 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_suite 而不是 test_case 时获得一些反馈:
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()