2013-01-07 2 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)이 유용 할 수 있습니다 (코드를 테스트하지 않았습니다). –

+0

가능한 중복 [boost :: test에 자동 등록으로 BOOST \ _PARAM \ _TEST \ _CASE를 사용할 수 있습니까?] (http://stackoverflow.com/questions/8084038/is-it-possible-to-use- 부스트 - 테스트 케이스 - 자동 - 등록 - 부스트와 함께) –

답변

1

없음 부스트 지원 AFAIK, 그래서 나는이 작업을 수행하지 :

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>(); 
} 
관련 문제