准备C/C++编程环境CLion
1. 基本环境
本文的编译及运行环境是Ubuntu 22.04 64Bit,IDE为CLion,后续的单元测试会使用GoogleTest在CLion中运行,环境大家可参考,Ubuntu与MacOS差别不大,Windows上如果CLion后续有差异导致地内容有误,还请联系我进行修订。QQ189650615
2. 创建一个空的C++工程
在CLion中创建一个空的C++工程,点击菜单File->New->Project...
工程文件树如下:
gmc
├── CMakeLists.txt
├── external
├── src
│ ├── gmc.c
│ └── gmc.h
└── tests
└── gmc_tests.cpp
目录说明:
- external用于放置一些第三方库,主要是放GoogleTest
- src为源码目录
- tests为单元测试目录
gmc.h文件内容:
#ifndef GMC_GMC_H
#define GMC_GMC_H
#ifdef __cplusplus
extern "C" {
#endif
int add(int a, int b);
#ifdef __cplusplus
}
#endif
#endif //GMC_GMC_H
gmc.c文件内容:
#include "gmc.h"
int add(int a, int b) {
return a + b;
}
3. 集成GoogleTest环境
从Github下载最新的GoogleTest
,本文编写时的最新版本是1.13.0
,路径如下:
https://github.com/google/googletest/archive/refs/tags/v1.13.0.tar.gz
下载后,文件名重命名为googletest-1.13.0.tar.gz
,将其放置在external
目录中,文件树如下:
gmc
├── CMakeLists.txt
├── external
│ └── googletest-1.13.0.tar.gz
├── src
│ ├── gmc.c
│ └── gmc.h
└── tests
└── gmc_tests.cpp
更新CMakeLists.txt
,内容如下:
cmake_minimum_required(VERSION 3.22)
project(gmc)
set(CMAKE_CXX_STANDARD 14)
set(GOOGLETEST_VERSION 1.13.0)
include(FetchContent)
FetchContent_Declare(
googletest
URL ${PROJECT_SOURCE_DIR}/external/googletest-1.13.0.tar.gz
)
# For Windows: Prevent overriding the parent project's compiler/linker settings
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(googletest)
enable_testing()
include_directories(src)
add_executable(gmc src/gmc.h src/gmc.c tests/gmc_tests.cpp)
target_link_libraries(
gmc
GTest::gtest_main
)
include(GoogleTest)
gtest_discover_tests(gmc)
gmc_tests.cpp
文件内容如下:
#include <gtest/gtest.h>
#include "gmc.h"
TEST(GMCTest, test1) {
ASSERT_EQ(12, add(4, 8));
}
运行单元测试,在CLion中添加一个GoogleTest,点击菜单Run->Edit Configurations...
添加成功后,运行单元测试,运行结果如下: