2010-06-23 4 views
14

저는 CppUnit을 꽤 오랫동안 사용해 왔습니다 (그리고 만족합니다). Boost 라이브러리에 점점 더 많은 부분을 사용하면서 boost.test에 대해 간략하게 살펴 봤습니다. 이제 새로운 프로젝트에서 boost.test로 전환해야하는지 궁금합니다.boost.test 대 CppUnit

두 사람의 프레임 워크의 차이점과 boost.test를 사용할 때의 이점 (있는 경우)에 대해 알려줄 수 있습니까?

+4

http://stackoverflow.com/questions/242926/comparison-of-c-unit-test-frameworks에 대한 답변이 유용 할 것입니다. –

+0

@Alex : 귀하의 게시물에 감사드립니다. 거기에 몇 가지 유용한 링크가 있습니다. – chrmue

+0

좋은 링크, AAlex, +1. @chrmue, 명확히하기 위해 - 당신이 찾고있는 비교가 부스트 사용자로 가정되어야 하는가? "부스트를 사용하여 개발한다면 부스트 텍스트를 사용하는 것이 유리합니까?"라고 묻고 있습니까? 또는 당신은 간단하게 비교를 찾고 있습니까? – Mawg

답변

17

호감을 갖고 Google Test으로 바로 가면 CppUnit 및 boost::unit_test이 거칠고 반복적으로 보입니다. 예를 들어

, 당신은 간단하게 고정이 있다고 :

class MyFixture : public ::testing::Test 
{ 
    protected: 
    int foo; 

    virtual void SetUp() { foo = 0; } 
}; 

당신의 고정에 테스트를 추가하려면를, 그것을 쓰기!

TEST_F(MyFixture, FooStartsAtZero) { 
    EXPECT_EQ(0, foo); 
} 

그게 전부입니다. 명백한 testsuite 선언이 없거나 모든 테스트 이름을 반복하는 별도의 의제가 있음을 주목하십시오.

$ g++ -o utest utest.cpp -lgtest -lgtest_main

에로 컴파일하고

Running main() from gtest_main.cc 
[==========] Running 1 test from 1 test case. 
[----------] Global test environment set-up. 
[----------] 1 test from MyFixture 
[ RUN  ] MyFixture.FooStartsAtZero 
[  OK ] MyFixture.FooStartsAtZero (0 ms) 
[----------] 1 test from MyFixture (0 ms total) 

[----------] Global test environment tear-down 
[==========] 1 test from 1 test case ran. (0 ms total) 
[ PASSED ] 1 test.

를 얻을 수 있도록 테스트를 실행 (자신이 테스트를 통과하기위한 좋은 녹색 텍스트를보고 그것을 실행!)

이 단지입니다 처음. 가능한 다른 것을 보려면 Google Test primeradvanced guide을보십시오. 이 덜 어설픈 Boost.Test 대안보다 어떻게

+1

+1 나는 똑같은 질문을하고 있었는데,이 대답을 통해 Google Test를 살펴 보았습니다. 감사. – Mawg

+0

이 답변을 게시 해 주셔서 감사합니다! 그것은 정말로 내 질문에 대답하지 않지만, 그것은 내가 아직 알지 못했던 단위 테스트 프레임 워크를 가리키며, 그것은 정말로 유망 해 보입니다. 첫눈에 가장 마음에 드는 부분은 테스트 케이스가 표현되는 방식입니다. 가장 짧은 가능한 폼! – chrmue

+0

@chrmue 고맙습니다. Google Test의 강력 함과 표현력에 감탄하게 될 것입니다. –

41

: 실제로 조금 더

class MyFixture { MyFixture() { /* setup here */} }; 

BOOST_AUTO_TEST_CASE(my_test, MyFixture) 
{ 
    BOOST_CHECK_EQUAL(0, foo); 
} 

매크로, 그러나 이것은 안전 및 C++에서 연습을하는 것이 좋습니다.

아직 Google 테스트를 선호하는 한 가지 기술적 인 이유가 있습니다. Boost.Test를 선호하는 경우가 많습니다. 나머지는 당신의 취향입니다.

+4

나는 Boost.Test를 많이 사용합니다. "Boost.Test를 선호하는 사람들이 꽤 많습니다"라고 자세히 설명해 주시겠습니까? –

+9

Boost.Test를 선호하는 이유에 대해서도 궁금합니다. googletest보다 어떤 이점이 있습니까? – Eloff

+3

이러한 장점은 무엇입니까? – Etherealone

관련 문제