본문 바로가기
컴퓨터/C & C++

[C++] google test 다양한 ASSERT, EXPECT 테스트 방법

by HanJoohyun 2023. 9. 3.
반응형

Assert와 Expect

목차

  1. google test 설치 방법
  2. google test 수행 방법, ASSERT와 EXPECT
  3. google test 다양한 ASSERT, EXPECT 테스트 방법 (본 글)
  4. google test 실제 코드에서 컴파일 및 수행 방법

들어가며

지난 포스팅에서는 첫 번째 google test code를 작성해보았습니다. 그리고 간단하게 ASSERT와 EXPECT에 대해서도 알아보았습니다. 이번 포스팅에서는 ASSERT와 EXPECT에 대해 더 자세히 알아보도록 하겠습니다.

ASSERT와 EXPECT에서 사용할 수 있는 macro 들

  • EXPECT_TRUE(condition): 조건이 참인지 테스트
  • EXPECT_FALSE(condition): 조건이 거짓인지 테스트
  • EXPECT_EQ(val1, val2): val1과 val2가 같은지 테스트
  • EXPECT_NE(val1, val2): val1과 val2가 다른지 테스트
  • EXPECT_LT(val1, val2): val1 < val2 인지 테스트
  • EXPECT_LE(val1, val2): val1 <= val2 인지 테스트
  • EXPECT_GT(val1, val2): val1 > val2 인지 테스트
  • EXPECT_GE(val1, val2): val1 >= val2 인지 테스트
  • EXPECT_STREQ(str1, str2): 두 c_string(char*)이 같은지 테스트
  • EXPECT_STRNE(str1, str2): 두 c_string(char*)이 다른지 테스트
  • EXPECT_THROW(statement, exception_type): 해당 코드가 지정한 에러를 발생하는지 테스트
  • EXPECT_NO_THROW(statement): 해당 코드가 오류가 없음을 확인하는 테스트

ASSERT_THAT, EXPECT_THAT 그리고 matcher

ASSERT와 EXPECT에서 사용할 수 있는 macro 중에서 _THAT이란 것이 있습니다. _THAT은 matcher를 입력받게 되는데, 여러 matcher를 사용하여 다양한 테스트를 만들 수 있습니다.

  • ASSERT_THAT(actual_value, matcher)
  • EXPECT_THAT(actual_value, matcher)

Matcher와 활용 코드

  • Eq(value), Ne(value)
  • StartsWith(prefix)
  • IsEmpty()
  • SizeIs(m)

마치며

이번 포스팅에서는
다음시간에는 실제로 소스코드와 테스트코드가 분리된 환경에서 어떻게 gtest를 작성하는지 그 방법에 대해 알아보도록 하겠습니다. 여러분들께 도움이 되었으면 좋겠습니다.

REFERENCE

gtest assertion: https://google.github.io/googletest/reference/assertions.html

matcher 종류: https://google.github.io/googletest/reference/matchers.html

반응형

댓글