VS Code 기반으로 GTest를 사용법
GoogleTest 설치하는 글에서 간단하게 VS Code에서 테스트 코드를 실행하여 정상적인 gtest를 확인했습니다. 본 글에서는 VS Code와 gtest를 통해 개발할 때 이용할 수 몇가지 도구를 소개합니다. 빌드 자동화 도구를 이용해 보겠습니다.
개발환경을 갖추기위해 다음 1, 2, 3의 도구는 미리 설치되어 있어야 합니다.
1. VS Code 설치
VS Code는 설치 되어 있어야 하므로 아직 설치 전이라면 다음 문서를 통해 설치할 수 있습니다.
[VSCode]Windows에 VS Code를 먼저 설치해볼까!
VS Code 설치 가이드1. VS Code란?VS Code(Visual Studio Code)는 Microsoft에서 제공하는 무료 코드 편집기로, 가볍고 빠른 성능을 제공하면서도 강력한 기능을 갖춘 개발 환경입니다. 다양한 프로그래밍 언어
all-tech-hub.tistory.com
2. Cygwin 설치 및 설정
Cygwin은 Linux 환경을 Windows에서 실행할 수 있도록 해주는 도구이며 googletest를 Windows에서 사용하는 환경이므로 미리 설치되어 있을 것입니다. 만약 설치 전이라면 다음 링크를 통해 설치할 수 있습니다.
[Cygwin]Windows에서 Linux처럼 C,C++개발!
Cygwin+VS Code 환경 설정오늘은 C++ 개발을 위한 VS Code + Cygwin 환경 설정 방법을 작성해 보겠습니다. Cygwin을 사용하면 Windows 환경에서 리눅스와 유사한 개발 환경을 구성할 수 있어, 특히 GNU 컴파
all-tech-hub.tistory.com
- Cygwin 설치가 되었는지 확인을 위해 Cygwin 터미널, 또는 cmd 터미널을 통해 아래 명령어를 입력하여 g++가 정상 설치되었는지 확인해 봅니다.
$ g++ --version
3. GoogleTest 설치 및 설정
GoogleTest를 설치하고 전역으로 사용할 수 있도록 설정이 미리 되어야 하며 다음 링크에서 따라할 수 있습니다.
[TDD C++(1)]TDD 도구 설치! GoogleTest란? 또 구글!
Windows기반 GoogleTest 설치하기 Google Test(googletest)는 구글에서 개발한 C++ 단위 테스트(Unit Testing) 프레임워크입니다. 대표적으로 다음과 같은 특징을 자랑하고 있습니다.쉽고 직관적인 API로 다양한
all-tech-hub.tistory.com
4. VS Code에서 C++ 프로젝트 생성
(1) C++ 개발을 위해 VS Code에 도구 추가
- C++ 개발을 위해 다음 도구를 확장:마켓플레이스에서 설치합니다.
- 물론 다음과 같은 도구는 없어도 개발을 할 수 있습니다. 사용 하다 필요할 때 설치되어도 되므로 필요에 따라서 설치하길 바랍니다. 개발의 필수라기 보다는 개발의 편리성을 도와 줄 수 있는 도구라고 생각하면 됩니다.
- C/C++ (by Microsoft)
- CMake Tools
- Test Explorer UI
- GoogleTest Adapter (GoogleTest를 실행하기 위한 확장)
- 등등
다음은 각 도구의 기능을 간단히 소개하고 설치 방법을 확인할 수 있으며 "설치" 버튼이 아닌 경우는 제 환경에 미리 설치되어 있는 상태이므로 처음 진행할 때는 설치 버튼이 보입니다.
(a) C/C++ (by Microsoft): C++ 코드 편집, 인텔리센스, 디버깅 등 기본적인 C++ 개발 환경을 제공합니다.
(b) CMake Tools: CMake 기반의 프로젝트를 구성하고 빌드하는 데 도움을 줍니다.
(c) Test Explorer UI: VS Code 내에서 테스트 결과를 시각적으로 확인할 수 있게 해줍니다.
(d) GoogleTest Adapter: GoogleTest 프레임워크를 VS Code의 Test Explorer와 연동하여 테스트 실행 및 관리를 용이하게 합니다.
5. CMake 설정
VS Code에서 새 폴더(예: TDD-Project)를 만들어서 열어봅니다.
폴더 안에 src(소스 코드)와 test(테스트 코드) 디렉토리를 만들어서 필요한 코드를 작성할 준비를 합니다.
예시에서 사용할 프로젝트 구조는 다음과 같습니다. 폴더 구조는 원하는 방향에 따라 얼마든지 구성할 수 있습니다.
1) 프로젝트 구조
TDD-Project
│── CMakeLists.txt
│── src
│ │── CMakeLists.txt
│ ├── calculator.h
│ ├── calculator.cpp
│── test
│ ├── CMakeLists.txt
│ ├── test_main.cpp
│ ├── test_calculator.cpp
│
── build (빌드 디렉토리)
2) 최상위 CMakeLists.txt 작성
CMakeLists.txt 파일을 프로젝트 루트에 만들고 아래 내용을 추가해 줍니다.
cmake_minimum_required(VERSION 3.10)
project(CppTDDProject)
set(CMAKE_CXX_STANDARD 14)
add_subdirectory(src)
add_subdirectory(test)
3) src/CMakeLists.txt 작성
add_library(calculator calculator.cpp)
4) test/CMakeLists.txt 작성
enable_testing()
add_executable(test_calculator test_main.cpp test_calculator.cpp)
target_link_libraries(test_calculator PRIVATE calculator gtest gtest_main pthread)
add_test(NAME TestCalculator COMMAND test_calculator)
6. 코드 작성
1) src/calculator.h
#ifndef MY_CLASS_H
#define MY_CLASS_H
class Calculator {
public: int add(int a, int b);
};
#endif
2) src/calculator.cpp
#include "calculator.h"
int Calculator::add(int a, int b) {
return a + b;
}
3) test/test_main.cpp
#include <gtest/gtest.h>
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
4) test/test_my_class.cpp
#include <gtest/gtest.h>
#include "../src/calculator.h"
TEST(CalculatorTest, AddFunction) {
Calculator calculator;
EXPECT_EQ(calculator.add(2, 3), 5);
EXPECT_EQ(calculator.add(-1, 1), 0);
}
7. 빌드 및 실행
CMake 빌드
Cygwin 터미널에서 프로젝트 루트(TDD-Project)로 이동 후 빌드가 정상적으로 완료되면 실행 가능한 테스트 파일이 생성됩니다. 전반적인 절차는 다음과 같습니다. 프로제트 폴더에서 순서대로 진행 합니다.
$ mkdir build
$ cd build
$ cmake ..
$ make
정상적으로 진행되었다면 build 폴더 내에 test 폴더가 생성되고 실행 파일을 만들어 집니다.
실행 파일을 다음과 같이 실행한 후 테스트 결과 화면을 얻을 수 있습니다.
$ ./test/test_my_class
마무리
이제 Cygwin, CMake, GoogleTest를 활용한 C++ TDD 환경을 완벽하게 설정되었습니다.
이 설정을 기반으로, 더 복잡한 테스트 케이스를 추가하면서 TDD를 적용해 나가면 되며 구체적인 테스트 케이스를 추가하는 GoogleTest 활용 방법을 계속 정리하려고 합니다. C++ TDD 개발에 도움이 되길 바랍니다. 🚀
'TDD 테스트주도개발 > TDD for C++' 카테고리의 다른 글
[googletest문법4]파라메터 이용 TEST_P() 사용법 (1) | 2025.03.13 |
---|---|
[googletest문법3]테스트 픽스처 TEST_F() 사용법 (0) | 2025.03.10 |
[Googletest문법2]단일테스트 TEST() 작성방법 (0) | 2025.03.08 |
[GoogleTest문법1]매크로 종류 (0) | 2025.03.06 |
[TDD C++(1)]TDD 도구 설치! GoogleTest란? 또 구글! (1) | 2025.03.02 |