본문 바로가기

프로그래밍

gtest 사용하기

시작 코드

#include "gtest/gtest.h"

int _tmain(int argc, _TCHAR* argv[])
{
	::testing::InitGoogleTest(&argc,argv);

	return RUN_ALL_TESTS();
}

테스트 문법

Basic Assertions

Fatal assertionNonfatal assertionVerifies
ASSERT_TRUE(condition);EXPECT_TRUE(condition);condition is true
ASSERT_FALSE(condition);EXPECT_FALSE(condition);condition is false

Binary Comparison

Fatal assertionNonfatal assertionVerifies
ASSERT_EQ(expectedactual);EXPECT_EQ(expectedactual);expected == actual
ASSERT_NE(val1val2);EXPECT_NE(val1val2);val1 != val2
ASSERT_LT(val1val2);EXPECT_LT(val1val2);val1 < val2
ASSERT_LE(val1val2);EXPECT_LE(val1val2);val1 <= val2
ASSERT_GT(val1val2);EXPECT_GT(val1val2);val1 > val2
ASSERT_GE(val1val2);EXPECT_GE(val1val2);val1 >= val2

String Comparion

Fatal assertionNonfatal assertionVerifies
ASSERT_STREQ(expected_stractual_str);EXPECT_STREQ(expected_stractual_str);the two C strings have the same content
ASSERT_STRNE(str1str2);EXPECT_STRNE(str1str2);the two C strings have different content
ASSERT_STRCASEEQ(expected_stractual_str);EXPECT_STRCASEEQ(expected_stractual_str);the two C strings have the same content, ignoring case
ASSERT_STRCASENE(str1str2);EXPECT_STRCASENE(str1str2);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

추천 학습순서

  1. 시작문서 : http://code.google.com/p/googletest/wiki/GoogleTestPrimer
  2. 예제 : http://code.google.com/p/googletest/wiki/GoogleTestSamples
  3. 더 다양한 기능 : http://code.google.com/p/googletest/wiki/GoogleTestAdvancedGuide

 

출처: <http://sakula99.egloos.com/2911840

'프로그래밍' 카테고리의 다른 글

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