2013-07-05 6 views
0

테스트 스위트로 boost.test를 사용하고 있습니다. 가능하다면 테스트를위한 필수 조건을 알고 싶습니다. 예 :Boost.Test howto "테스트 종속성"생성

uniqut_ptr<MyClass> g_class; 

BOOST_AUTO_TEST_CASE(test1) 
{ 
    BOOST_REQUIRE_NO_THROW(g_class = CreateMyClass()); 
} 

BOOST_AUTO_TEST_CASE(test2) 
{ 
    // This test need the test1 as passed 
    BOOST_REQUIRE(g_class->doSomething()); 
} 

이 경우 test1에서 test2가 실패하면 프로그램이 실패합니다. 각 테스트의 시작 부분에 BOOST_REQUIRE(g_class)을 추가 할 수 있다는 것을 알고 있습니다. 그러나 다른 방법이 있습니까?

+0

단위 테스트는 실행 순서에 따라 달라서는 안됩니다. 이것은 Boost.Test에 대한 제한이 아니라 일반적으로 단위 테스트의 원칙입니다. 일반적인 것들을 제외하기 위해, 당신은 비품을 사용하고자 할 수도 있습니다 –

+0

하지만 test1은 항상 test2 오른쪽의 첫 번째 실행됩니까? –

+0

나는 그렇게 생각한다. 그러나 그것에 의존하지 말아야한다. 실행 순서에 관계없이 작동하는 방식으로 테스트를 작성해야합니다. –

답변

2

진실을 요구할 때 사용하기 위해 부스트 REQUIRE이 표시되므로 각 테스트의 맨 위에 필요를 넣으십시오. 또는 테스트 픽스처 사용을 고려하고 설정 기능에서 설정하십시오. 예제가 있습니다 here 테스트에서 전역 변수를 사용하려고하는 것처럼 냄새를 맡으므로 끔찍한 방식으로 상호 작용할 수 있습니다. 글로벌 데이터는 가치보다 더 큰 문제입니다.