2014-01-17 5 views
1

단위 테스트를 수행하기 위해 BOOST :: UNIT_TEST 프레임 워크를 사용하고 있으며 단위 테스트를 수행하는 데 훌륭한 도구입니다. 그러나, 나는 불편 뭔가를 발견 : 나는 테스트 기능을 추가 할 때, 다음과 같은 코드가 설명대로 기능이 정적 또는 무료로 기능해야한다는 것 :정적이 아닌 클래스 멤버 함수에 BOOST_TEST_CASE를 사용할 수 있습니까?

test_suite* ts = BOOST_TEST_SUITE("unit_test"); 

ts->add(BOOST_TEST_CASE(&static_fun)); 

그것을 예를 들어, 정적 기능하지 않을 때,

class Abc 
{ 
    public: 
    void myfun(); 

}; 

Abc obj; 
ts->add(BOOST_TEST_CASE(&(obj.myfun))); 

그러면 C2064: term does not evaluate to a function taking 0 arguments 오류가 발생합니다. 테스트 프레임 워크에 비 정적 클래스 멤버 함수를 추가 할 수 있다고 생각하십니까? 감사합니다

답변

1

당신은보아야합니다 here 이 경우에는 boost::bind을 사용할 수 있습니다.

2

테스트 픽스처 클래스를 정의하려고 생각하십니까? 대부분의 경우 부스트 테스트를 사용하는 방법은 다음과 같습니다.

struct MyTestFixture 
{ 
    int test_data; 
    void func() 
    { 
     // some common test code 
    } 
}; 

BOOST_FIXTURE_TEST_SUITE(MyTest, MyTestFixture) 

BOOST_AUTO_TEST_CASE(Test1) 
{ 
    test_data = 3; 
    func(); 
    // ... 
} 

BOOST_AUTO_TEST_CASE(Test2) 
{ 
    // ... 
} 

BOOST_AUTO_TEST_SUITE_END()