windows从零搭建googletest之c++测试工程

简介

googletest(也称gtest)是由Google测试技术团队开发的测试框架。为c/c++代码提供了一套优秀的单元测试解决方案。本文介绍使用googletest在windows下从零搭建自己的单元测试工程。

0. 环境准备

系统:Windows10
vscode: https://code.visualstudio.com/

mingw-64:https://www.mingw-w64.org/downloads/
也可以国内下载https://www.onlinedown.net/soft/10045442.htm

cmake: https://cmake.org/download/
googletest: https://github.com/google/googletest

代码编辑器使用visual studio code,下载c/c++相关插件。
下载mingw-64cmake编译工具,工具文件路径加入到系统环境变量中
下载googletest开源项目

1. 编译gtest动态链接库

搭建gtest测试工程,其实只需要将googletest的动态库与自己的单元测试程序链接起来。
命令行进入googletest工程的googletest文件夹目录
在这里插入图片描述
修改该目录下的CMakeLists.txt,设置编译dll动态库选项
(如果报错GOOGLETEST_VERSION未定义就在顶部加一行 set(GOOGLETEST_VERSION 1.11.0)
在这里插入图片描述
Windows环境下cmake编译:

cmake -G "MinGW Makefiles"
// 如果此前执行过cmake没有编译出想要的库,需要先删除CMakeCache.txt再重新执行

生成MakeFile之后,执行mingw32的mingw32-make命令

mingw32-make

编译成功后,会在googletest文件夹下新生成一个bin文件夹保存libgtest.dll、libgtest_main.dll。这两个动态链接库就是我们搭建自己的单元测试工程需要的。
在这里插入图片描述

2. 搭建单元测试工程

整个工程目录结构如下。
include和src用来编写自己的源码和单元测试用例。
新建一个gtest文件夹,将googtest文件夹下的include、src直接拷贝过来;将libgtest.dll和libgtest_main.dll拷贝至lib文件夹下

D:.
├─gtest
│  ├─include
│  ├─lib
│  └─src
├─include
├─src
|-CMakeLists.txt

这里我使用googletest项目内的sample1单元测试源码演示(sample1.h、sample1.cc、sample1_unitest.cc)。
根目录下编写CMakeLists.txt。

# 指定CMake编译最低要求版本
cmake_minimum_required(VERSION 3.14)
# 给项目命名
project(sample1)

# 收集c/c++文件并赋值给变量SRC_LIST_C
# ${CMAKE_CURRENT_SOURCE_DIR}代表CMakeLists.txt当前项目录
file(GLOB
    SRC_LIST_C
    ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cc
)

# 指定.h头文件目录
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include
                    ${CMAKE_CURRENT_SOURCE_DIR}/gtest/include
)

# 指定.dll链接库文件目录
link_directories(${CMAKE_CURRENT_SOURCE_DIR}/gtest/lib)

# 将c文件生成可执行文件sample1.exe
add_executable(sample1 ${SRC_LIST_C})

# 指定sample1 链接库libgtest.dll、libgtest_main.dll
target_link_libraries(sample1
                      libgtest
                      libgtest_main
)

根目录执行编译命令

cmake -G "MinGW Makefiles"
// 失败删除CMakeCache.txt
mingw32-make

运行生成的sample1.exe测试程序,结果如图
在这里插入图片描述
注意

.exe可执行文件需要和.dll库放在同一目录下运行进行链接装载;或者将.dll路径加到系统环境变量path中(相当于Linux
LD_PRELOAD)

总结

搭建c/c++单元测试工程主要有几个步骤(windows下)

  • 下载googletest开源测试框架,编译出libgtest.dll、libgtest_main.dll
  • 拷贝googletest的include、src、lib至自己的代码工程中
  • 编写cmake链接两个gtest库
  • 运行测试程序
  • gtest测试框架使用教程都可以检索到。主要在测试代码的main函数中调用RUN_ALL_TESTS执行gtest测试宏函数
int main() 
{
    testing::InitGoogleTest();
    return RUN_ALL_TESTS();
}
要在Visual Studio 2019中新建一个Google Test项目,可以按照以下步骤进行操作: 1. 打开Visual Studio 2019。 2. 在菜单栏中选择 "文件" -> "新建" -> "项目"。 3. 在 "创建新项目" 窗口中,选择 "Visual C++" -> "测试" -> "Google Test 项目"。 4. 在 "项目名称" 输入框中,输入你想要的项目名称。 5. 确定项目的存储位置,并点击 "确定"。 6. 在 "Google Test 项目向导" 窗口中,选择 "使用默认设置",然后点击 "下一步"。 7. 在 "Google Test 项目向导" 窗口的 "Google Test 版本" 下拉菜单中,选择你想要使用的Google Test版本。 8. 点击 "完成",Visual Studio将会自动创建一个Google Test项目的基本结构。 现在你就可以在新建的Google Test项目中编写和运行单元测试了。你可以在测试文件中编写测试用例,并使用Google Test提供的断言和测试宏来进行断言和测试。 #### 引用[.reference_title] - *1* *3* [Google Test简述](https://blog.csdn.net/weixin_39445116/article/details/116767026)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [windows搭建googletestc++测试工程](https://blog.csdn.net/qq_32348883/article/details/128443857)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值