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()) << "함수 성공";