7. 4. 테스트 결과 보고 받기
int main(int argc, char **argv) {
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
8. 즉,
테스트 메소드를 사용해
테스트를 정의하고
단언 메소드를 기대 값을 정하며
테스트 스위트를 지원하고
테스트 결과를 보고 받을 수 있는
테스트 자동 프레임워크를 xUnit이라 한다.
9. xUnit?
최소한 알아야 할 것
테스트 정의
픽스처fixture?
스위트suite 정의
테스트 실행, 결과
xUnit 내부
테스트 명령
테스트 스위트 객체
젃차적 세상에서의 xUnit
10. struct F {
F() : i( 0 ) { BOOST_TEST_MESSAGE( "setup fixture" ); }
~F() { BOOST_TEST_MESSAGE( "teardown fixture" ); }
int i;
};
BOOST_FIXTURE_TEST_CASE( test_case1, F ) {
BOOST_CHECK( i == 1 );
++i;
}
BOOST_FIXTURE_TEST_CASE( test_case2, F ) {
BOOST_CHECK_EQUAL( i, 1 );
}
이 소스코드를 예로 들어 설명
테스트 픽스처 설치
SUT 실행
단언 메소드 호출
테스트 픽스처 해체
11. struct F {
F() : i( 0 ) { BOOST_TEST_MESSAGE( "setup fixture" ); }
~F() { BOOST_TEST_MESSAGE( "teardown fixture" ); }
int i;
};
BOOST_FIXTURE_TEST_CASE( test_case1, F ) {
BOOST_CHECK( i == 1 );
++i;
}
BOOST_FIXTURE_TEST_CASE( test_case2, F ) {
BOOST_CHECK_EQUAL( i, 1 );
}
테스트 픽스처 설치
인라인 설치 In-line Setup
위임 설치 Delegated Setup
암묵적 설치 Implicit Setup
12. struct F {
F() : i( 0 ) { BOOST_TEST_MESSAGE( "setup fixture" ); }
~F() { BOOST_TEST_MESSAGE( "teardown fixture" ); }
int i;
};
BOOST_FIXTURE_TEST_CASE( test_case1, F ) {
BOOST_CHECK( i == 1 );
++i;
}
BOOST_FIXTURE_TEST_CASE( test_case2, F ) {
BOOST_CHECK_EQUAL( i, 1 );
} SUT 실행
13. struct F {
F() : i( 0 ) { BOOST_TEST_MESSAGE( "setup fixture" ); }
~F() { BOOST_TEST_MESSAGE( "teardown fixture" ); }
int i;
};
BOOST_FIXTURE_TEST_CASE( test_case1, F ) {
BOOST_CHECK( i == 1 );
++i;
}
BOOST_FIXTURE_TEST_CASE( test_case2, F ) {
BOOST_CHECK_EQUAL( i, 1 );
}
테스트 픽스처 해체
가비지 컬렉션 해체 Garbage-Collected Teardown
인라인 해체 In-line Teardown
암묵적 해체 Implicit Teardown
자동 해체 Automated Teardown
14. xUnit?
최소한 알아야 할 것
테스트 정의
픽스처fixture?
스위트suite 정의
테스트 실행, 결과
xUnit 내부
테스트 명령
테스트 스위트 객체
젃차적 세상에서의 xUnit
15. SUT를 실행하기 위해 준비해야 하는 모든 것
설치, 해체를 책임진다.
class FooTest : public ::testing::Test {
protected:
virtual void SetUp() { ... }
virtual void TearDown() { ... }
};
TEST_F(FooTest, Test1) {
...
}
TEST_F(FooTest, Test2) {
...
}
16. xUnit?
최소한 알아야 할 것
테스트 정의
픽스처fixture?
스위트suite 정의
테스트 실행, 결과
xUnit 내부
테스트 명령
테스트 스위트 객체
젃차적 세상에서의 xUnit
23. xUnit?
최소한 알아야 할 것
테스트 정의
픽스처fixture?
스위트suite 정의
테스트 실행, 결과
xUnit 내부
테스트 명령
테스트 스위트 객체
젃차적 세상에서의 xUnit
24. 테스트 스위트에는
테스트 케이스가 있을 수도
테스트 스위트가 있을 수도
Composite 패턴
같은 방식으로 취급
컨테이너와 원소
25. xUnit?
최소한 알아야 할 것
테스트 정의
픽스처fixture?
스위트suite 정의
테스트 실행, 결과
xUnit 내부
테스트 명령
테스트 스위트 객체
젃차적 세상에서의 xUnit
26. 젂역 프로시저인 테스트 메소드
테스트 스위트 프로시저
테스트 메소드들의 배열을 인자로
더 자세한 내용은
Working Effectively with Legacy Code : Chapter 19 참고
27. reference
• google test
– http://code.google.com/p/googletest/
• boost
– http://www.boost.org/
• 오픈 소스 C/C++ 유닛 테스트 도구, Part 1
– http://www.ibm.com/developerworks/kr/library/au-ctools1_boost/