시작 코드
#include "gtest/gtest.h" int _tmain(int argc, _TCHAR* argv[]) { ::testing::InitGoogleTest(&argc,argv); return RUN_ALL_TESTS(); }
테스트 문법
Basic Assertions
Fatal assertion | Nonfatal assertion | Verifies |
ASSERT_TRUE(condition); | EXPECT_TRUE(condition); | condition is true |
ASSERT_FALSE(condition); | EXPECT_FALSE(condition); | condition is false |
Binary Comparison
Fatal assertion | Nonfatal assertion | Verifies |
ASSERT_EQ(expected, actual); | EXPECT_EQ(expected, actual); | expected == actual |
ASSERT_NE(val1, val2); | EXPECT_NE(val1, val2); | val1 != val2 |
ASSERT_LT(val1, val2); | EXPECT_LT(val1, val2); | val1 < val2 |
ASSERT_LE(val1, val2); | EXPECT_LE(val1, val2); | val1 <= val2 |
ASSERT_GT(val1, val2); | EXPECT_GT(val1, val2); | val1 > val2 |
ASSERT_GE(val1, val2); | EXPECT_GE(val1, val2); | val1 >= val2 |
String Comparion
Fatal assertion | Nonfatal assertion | Verifies |
ASSERT_STREQ(expected_str, actual_str); | EXPECT_STREQ(expected_str, actual_str); | the two C strings have the same content |
ASSERT_STRNE(str1, str2); | EXPECT_STRNE(str1, str2); | the two C strings have different content |
ASSERT_STRCASEEQ(expected_str, actual_str); | EXPECT_STRCASEEQ(expected_str, actual_str); | the two C strings have the same content, ignoring case |
ASSERT_STRCASENE(str1, str2); | EXPECT_STRCASENE(str1, str2); | the two C strings have different content, ignoring case |
테스트 작성
TEST(test_case_name, test_name) { //... test body ... }
테스트 케이스와 테스트 이름을 정한다.
펙토리얼 함수의 테스트 예
int Factorial(int n); TEST(FactorialTest, HandlesZeroInput) { EXPECT_EQ(1, Factorial(0)); } TEST(FactorialTest, HandlesPositiveInput) { EXPECT_EQ(1, Factorial(1)); EXPECT_EQ(2, Factorial(2)); EXPECT_EQ(6, Factorial(3)); EXPECT_EQ(40320, Factorial(8)); }
실행하면 테스트 케이스와 테스트 단위별로 실행 및 결과가 출력된다.
googletest: https://code.google.com/p/googletest/wiki/Primer
Google Test만의 장점
- 테스트 함수가 ASSERT_ 계열과 EXPECT_ 계열로 분리되어 테스트 흐름을 제어가능
- ASSERT_*를 쓰면 테스트실패시 다음 테스트케이스로 넘어가고 EXPECT_*를 쓰면 실패하더라도 나머지 테스트케이스 모두 실행.
- 참고 URL : http://rein.upnl.org/wordpress/archives/1460
- 실행인자로 테스트케이스에 대한 여러 옵션을 줄 수 있음
- 선별적으로 실행한다거나 실행횟수를 조절하는 등
- 참고 URL : http://reiot.com/2008/07/04/google-test/
- 테스트 실패시 브레이크 잡아주는 기능
- 실행인자로 --gtest_break_on_failure
- 참고 URL : http://www.npteam.net/656
- 초록과 빨강의 컬러풀 피드백(!)
- 스크린샷 : http://decoder.tistory.com/559
추천 학습순서
- 시작문서 : http://code.google.com/p/googletest/wiki/GoogleTestPrimer
- 예제 : http://code.google.com/p/googletest/wiki/GoogleTestSamples
- 더 다양한 기능 : http://code.google.com/p/googletest/wiki/GoogleTestAdvancedGuide
'프로그래밍' 카테고리의 다른 글
FILETIME (0) | 2013.05.16 |
---|---|
TCP 상태 변화 (TCP States) (0) | 2013.04.01 |
FormatMessage (Win32) (0) | 2012.12.05 |
include 가드 (0) | 2012.12.05 |
Unicode 사용 (0) | 2012.12.05 |