gtest - Gakgu/Gakgu.github.io GitHub Wiki
gtest란?
구글에서 제공하는 C++ 테스트 프레임워크이다.
구성
- header
#include <gtest/gtest.h>
- library
libgtest.so
libgtest_main.so
작성
TEST() Macro
TEST(테스트 케이스, 테스트) {
...
}
- 테스트 케이스의 이름은 중복될 수 있다.
- 테스트 전체 이름은
테스트 케이스.테스트
로 구성된다.
TEST_F() Macro
TEST_F(테스트 픽스쳐 클래스, 테스트) {
...
}
- Test Fixtures의 약자로 여러 테스트에 사용되는 데이터를 공유할 때 사용한다.
Test Fixture Class
::testing::Test
클래스에서 상속받는다.- SetUp() 사용
- TearDown()를 사용해야만 하는 경우
- 예외를 처리할 때
- 테스트에 노출시킬 맴버는 public 또는 protected로 작성한다.
호출
- 메인함수를 직접 작성하는 방법
int main(int argc, char **argv)
{
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
-
gtest_main 라이브러리를 사용하는 방법
libgtest_main.so
를 링크한 후 메인함수 없이 실행하면 된다. -
특정 테스트 케이스만 호출하는 방법
$ [test_bin] --gtest_filter=[테스트케이스].[테스트]
함수
ASSERT, EXPECT 차이
- ASSERT - 테스트 바로 중단
- EXPECT - 테스트 계속 실행
메세지 추가
테스트 함수 뒤에 << "메세지"
를 붙여서 메세지를 추가한다.
// example
EXPECT_EQ(0, func()) << "함수 성공";