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

[C++] google test 수행 방법, ASSERT와 EXPECT

by HanJoohyun 2023. 9. 3.
반응형

첫 번째 cpp gtest code

목차

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

들어가며

앞서 google test를 설치하는 방법에 대해 알아보았습니다. 이번 포스팅에서는 gtest 수행 방법과 ASSERT와 EXPECT에 대해 알아보겠습니다.

gtest 수행 방법, 코드와 컴파일 방법

$ g++ -o 02.1.test 02.1.test.cpp -lgtest -std=c++14
$ ./02.1.test
[==========] Running 2 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 2 tests from TestName
[ RUN      ] TestName.Subtest_1
[       OK ] TestName.Subtest_1 (0 ms)
[ RUN      ] TestName.Subtest_2
02.1.test.cpp:6: Failure
Value of: 1 == 2
  Actual: false
Expected: true

[  FAILED  ] TestName.Subtest_2 (0 ms)
[----------] 2 tests from TestName (0 ms total)

[----------] Global test environment tear-down
[==========] 2 tests from 1 test suite ran. (0 ms total)
[  PASSED  ] 1 test.
[  FAILED  ] 1 test, listed below:
[  FAILED  ] TestName.Subtest_2

 1 FAILED TEST

ASSERT와 EXPECT

ASSERT_TRUE에서 ASSERT의 경우 하나의 테스트가 PASS되지 않고 FAIL이 되게 되면 그 즉시 테스트가 종료됩니다. 즉, 다음 테스트로 넘어가지 않게 되는 것이죠.

$ g++ -o 02.2.test 02.2.test.cpp -lgtest -std=c++14
$ ./02.2.test
[==========] Running 2 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 2 tests from TestName
[ RUN      ] TestName.Subtest_1
02.2.test.cpp:5: Failure
Value of: 1 == 2
  Actual: false
Expected: true

[  FAILED  ] TestName.Subtest_1 (0 ms)
[ RUN      ] TestName.Subtest_2
[       OK ] TestName.Subtest_2 (0 ms)
[----------] 2 tests from TestName (0 ms total)

[----------] Global test environment tear-down
[==========] 2 tests from 1 test suite ran. (0 ms total)
[  PASSED  ] 1 test.
[  FAILED  ] 1 test, listed below:
[  FAILED  ] TestName.Subtest_1

 1 FAILED TEST

ASSERT가 FAIL인 경우 테스트가 종료되지만, EXPECT를 사용하면 계속 테스트를 진행할 수 있습니다.

$ g++ -o 02.3.test 02.3.test.cpp -lgtest -std=c++14
$ ./02.3.test
[==========] Running 2 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 2 tests from TestName
[ RUN      ] TestName.Subtest_1
02.3.test.cpp:5: Failure
Value of: 1 == 2
  Actual: false
Expected: true

[  FAILED  ] TestName.Subtest_1 (0 ms)
[ RUN      ] TestName.Subtest_2
[       OK ] TestName.Subtest_2 (0 ms)
[----------] 2 tests from TestName (0 ms total)

[----------] Global test environment tear-down
[==========] 2 tests from 1 test suite ran. (0 ms total)
[  PASSED  ] 1 test.
[  FAILED  ] 1 test, listed below:
[  FAILED  ] TestName.Subtest_1

 1 FAILED TEST

위 코드의 경우는 Subtest_1에서 FAIL이 발생하였지만, Subtest_2 까지 수행됨을 확인할 수 있습니다.

마치며

여기까지 잘 수행되셨나요? 이번 포스팅에서는 gtest를 사용하여 첫 번째 cpp 테스트 코드를 작성해보았습니다.
다음 시간에는 ASSERT와 EXPECT에 대해 더 자세히 알아보도록 하겠습니다.
언제나 여러분들께 도움이 되었으면 합니다. 그럼 다음 포스팅에서 만나요!

REFERENCE

https://google.github.io/googletest/primer.html
https://youtu.be/nbFXI9SDfbk?si=p2FdrHz8dEFhtAp-

반응형

댓글