반응형
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)
이런 버튼이 활성화될텐데, 눌러서 라이브러리를 로컬에 설치/동기화한다.
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`디렉터리와 우측 상단 러너가 추가되었다면, 적용이 잘 된 것이다.
반응형
'IT' 카테고리의 다른 글
AWS의 serverless application을 local에서 테스트하는 방법 (0) | 2023.05.17 |
---|---|
Go 단위 테스트 방법 (0) | 2023.05.04 |
GPT-4의 등장과 개발 방법론의 변화 예측 (0) | 2023.04.04 |
Flutter iOS만 실행 실패 시, 해결 방법 (0) | 2023.04.03 |
App Store에 iOS/MacOS앱 배포를 위한 여정 첫번째 - Apple Developer Program 가입하기 (0) | 2023.03.30 |