2013-01-07 188 views
7

我有一個提升測試用例。無論參數如何,本測試用例的大部分行都會被執行。但是有些部分是根據提供的參數執行的。我想避免編寫兩個單獨的測試用例,除了一些小部分外,它們幾乎完全相同。所以,我需要使用類似下面的方法來創建參數測試情況:提升測試:如何編寫參數化測試用例

BOOST_FIXTURE_TEST_CASE(caseA, Fixture) 
{ 
    TestFunction("parameterA"); 
} 

BOOST_FIXTURE_TEST_CASE(caseB, Fixture) 
{ 
    TestFunction("parameterB"); 
} 

void TestFunction(string param) 
{ 
    // ... 
    // lots of common checks regardless of parameters 
    // ... 
    if(param == "parameterA") 
     BOOST_CHECK(...); 
    else if(param == "parameterB") 
     BOOST_CHECK(...); 
} 

是否有任何其他的方式來實現更便捷的方式我的目標是什麼?我可以找到BOOST_PARAM_CLASS_TEST_CASE宏,但我不確定它在這種情況下是否相關。

+1

[這個答案](http://stackoverflow.com/a/8110228/1252091)可能對你有用(我還沒有測試過這個代碼)。 – 2013-01-08 11:00:15

+0

[可以使用BOOST \ _PARAM \ _TEST \ _CASE在boost :: test上自動註冊嗎?]的可能的重複(http://stackoverflow.com/questions/8084038/is-it-possible-to-use-升壓PARAM-測試用例與 - 自動登記上升壓) –

回答

1

沒有加速的支持據我所知,所以我這樣做:

void test_function(parameters...) 
{ 
    <test code> 
} 

BOOST_AUTO_TEST_CASE(test01) { 
    test_function(parameters for case #1) 
} 

BOOST_AUTO_TEST_CASE(test02) { 
    test_function(parameters for case #2) 
} 

如果你喜歡,你可以用模板做:

template<int I, bool B> 
void test_function() 
{ 
    for(int i=0; i<I; i++) 
     if (B) BOOST_REQUIRE(i<10); 
} 

BOOST_AUTO_TEST_CASE(test01) { 
    test_function<10, true>(); 
} 

BOOST_AUTO_TEST_CASE(test02) { 
    test_function<20, false>(); 
} 
相關問題