[GTest] Google Test 설치하기
Google Test(이하 gtest)는 Google에서 개발한 C++ 테스트 프레임워크입니다.
오픈 소스(Github)로 제공되며 꽤나 보편적으로 사용되는 것 같습니다.
모든 테스트를 gtest를 사용해서 작성하게 되면
동일한 형식의 결과를 출력할 수 있다는 것도 큰 장점 중 하나라고 생각합니다.
- 제가 테스트 한 환경은 Ubuntu OS입니다.
Install
우선 gtest를 설치합니다.
gtest에서 공식적으로 지원하는 빌드 툴은 cmake와 bazel인데, 저는 cmake를 사용하기 때문에 같이 설치했습니다.
sudo apt install cmake libgtest-dev
cd /usr/src/gtest
mkdir build
cd build
sudo cmake ..
sudo make
sudo make install
Cmake
테스트 코드를 빌드하기 위해 CMakeLists.txt파일을 아래와 같이 작성할 수 있습니다.
cmake_minimum_required(VERSION 3.14)
project(test)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
include(FetchContent)
FetchContent_Declare(
googletest
GIT_REPOSITORY https://github.com/google/googletest
GIT_TAG v1.17.0
)
FetchContent_MakeAvailable(googletest)
add_executable(${PROJECT_NAME}
main.cpp
)
target_link_libraries(${PROJECT_NAME} PRIVATE
GTest::gtest
GTest::gtest_main
)
- FetchContent를 사용해서 모듈을 불러오고 URL과 버전을 작성합니다. (현재 날짜 기준 1.17.0이 최신 버전)
gtest & gtest_main
- GTest::gtest
- GTest::gtest_main
라이브러리를 링크 할 때 두 라이브러리를 중복해서 사용하는 경우가 있는데,
사실 둘 중 하나만 링크하면 된다고 합니다.
gtest는 libgtest.a를 사용하도록 하고,
gtest_main은 libgtest_main.a를 사용한다고 합니다.
gtest는 gtest에 관련된 라이브러리이고, gtest_main은 추가적으로 main 함수가 작성되어 있어서
따로 main 함수를 작성할 필요가 없다고 합니다.
(즉, gtest_main이 gtest를 포함)
만약 main을 따로 작성할 경우 아래와 같이 작성이 가능합니다.
#include <gtest/gtest.h>
int main(int argc, char **argv)
{
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
RUN_ALL_TESTS를 통해 따로 실행할 테스트를 지정하지 않아도 작성된 모든 테스트가 실행됩니다.