IT

C++ 테스트 환경 구축 - CLion에서 Google Test 연동, 사용 방법(with cmake)

紫紅 2023. 4. 17. 12:09
반응형

Jetbrains의 CLion

C++ 초심자를 위한 테스트 환경 구축 방법을 소개하고자 한다.

아마 대부분의 개발자는 python의 pytest, javascript의 jest, java의 junit 같이 테스트 디펜던시만 추가해서 동작시킬 수 있는 환경을 원할 것이다. 나 역시 그랬고, C++의 패키지 매니저가 뭔지도 몰라 삽질했던 나같은 사람을 위해 이 글을 작성한다.

CLion에 Google Test 적용하기

IDE: CLion(VS 등 다른 IDE 사용자는 다른 게시글을 찾길 권장. 이 게시글에 하트가 많이 눌려있다면 다른 IDE나 라이브러리, 플랫폼도 작성해보겠습니다)

요구사항

필수

  • C++ 버전: 14를 호환할 수 있는 버전(17에서도 동작한다)

선택

  • cmake(이 문서에 따르면, Bazel도 지원하는 것으로 확인 됨. CLion 자체에 cmake가 내장되어있으므로, cmake를 별도로 설치할 필요는 없다)

테스트 파일 만들기

1. cmake에 script 추가, 동기화

이 부분이 다른 언어의 의존성 추가에 해당한다.

# google test
include(FetchContent)
FetchContent_Declare(
        googletest
        URL https://github.com/google/googletest/archive/03597a01ee50ed33e9dfd640b249b4be3799d395.zip
)
# For Windows: Prevent overriding the parent project's compiler/linker settings
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(googletest)

Cmake 파일 변경 시, 활성화되는 동기화 버튼

이런 버튼이 활성화될텐데, 눌러서 라이브러리를 로컬에 설치/동기화한다.

2. 테스트 예제 작성

#include <gtest/gtest.h>

// Demonstrate some basic assertions.
TEST(HelloTest, BasicAssertions) {
// 아래 두 문자열("hello", "world")이 다르기를 기대
EXPECT_STRNE("hello", "world");
// 아래 두 값이 같기를 기대
EXPECT_EQ(7 * 6, 42);
}

3. cmake에 script 추가, 동기화

# testing
enable_testing()

add_executable(
        hello_test
        hello_test.cc
)
target_link_libraries(
        hello_test
        GTest::gtest_main
)

include(GoogleTest)
gtest_discover_tests(hello_test)

cmake파일을 수정하고, 2에서 했던 것처럼, 동기화해준다.

4. 러너, 빌드 결과물이 잘 생겼는지 확인, 테스팅

아래 강조표시에 주목한다. `cmake-build-debug`디렉터리와 우측 상단 러너가 추가되었다면, 적용이 잘 된 것이다.

연동이 끝났다. 이제 마음껏 단위테스트를 즐길 수 있다

 

반응형