C++单元测试

0 情景导入

在实习时,用到了C++中的单元测试,整理一下。分别在Windows和子系统(Ubuntu)中安装配置。

1 安装googletest

1.1 环境配置

  1. 下载gtest:git clone https://github.com/google/googletest.git

  2. 安装cmake:

    CMake 是一个开源的跨平台的自动化构建系统,主要用于 C++ 的工程构建、测试以及打包等自动化操作。它能根据开发者编写的 CMakeLists.txt 规则文件,在不同的平台输出所需要的工程文件,然后开发者可以按照常见的构建方式使用生成的工程文件编译最终的程序。

    CMake 是 Cross platform Make 的缩写,虽然名字中含有“make”,但是 CMake 和 Linux 上常见的 make 系统有所区别,是更上一层的构建系统。

    • Windows:首先打开 CMake 官方网站,在下载页面选择 Windows win64-x64 Installer 下载并安装
    • Ubuntuapt-get install cmake
  3. windows配置clion编译环境:Window10上CLion极简配置教程

1.2 编译gtest库

  1. 使用clion打开googletest代码目录,选择gtest项目编译生成:

    图片名称
  2. 显示下面的信息表明编译成功(显示Error running,不用管他),生成的libgtestd.a即为gtest的库文件,项目中引用这个库文件就能使用gtest了。

    图片名称

2 使用googletest

2.1 引入库

新建测试项目cliontest,将libgtestd.a文件拷贝到该代码根路径的lib路径下,在CMakeList.txt中加上以下内容:

1
2
3
4
5
6
# 添加上库文件的路径,注意相对路径
link_directories(lib/)
# 添加可执行文件
add_executable(cliontest main.cpp)
# 链接gtest库文件
target_link_libraries(cliontest libgtestd.a)

2.2 引入头文件

拷贝googletest/include下的gtest目录到项目下的include目录下,然后在CMakeList.txt中添加上对应的调用:

1
2
3
include_directories(
include/
)

然后在代码中添加头文件gtest/gtest.h就可以使用了。

2.3 测试

修改main.cpp并运行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "gtest/gtest.h"

int add(int a, int b) {
return a + b;
}

TEST(add, zero) {
EXPECT_EQ(0, add(0, 0));
}

TEST(add, positive_number) {
EXPECT_EQ(3, add(1, 2));
}

TEST(add, negative_number) {
EXPECT_EQ(-3, add(-1, -2));
}

int main() {
::testing::InitGoogleTest();
return RUN_ALL_TESTS();
}

3 gtest的使用教程

参考文档:Googletest Primer,google官方出品。

https://www.dyxmq.cn/program/usage-of-googletest.html

4 参考