ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

windows从零搭建googletest测试工程

2021-11-07 23:00:20  阅读:346  来源: 互联网

标签:cmake windows libgtest dll gtest googletest sample1 搭建


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

0. 环境准备

系统:Windows10
vscode: https://code.visualstudio.com/
mingw-64:https://www.mingw-w64.org/downloads/
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文件夹目录

googletest目录

修改该目录下的CMakeLists.txt,设置编译dll动态库选项
(如果报错GOOGLETEST_VERSION未定义就在顶部加一行 set(GOOGLETEST_VERSION 1.11.0))

开启dll编译选项

Windows环境下cmake编译:

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

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

mingw32-make

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

dll生成目录

2. 搭建单元测试工程

整个工程目录结构如下。
include和src用来编写自己的源码和单元测试用例。
新建一个gtest文件夹,将googtest文件夹下的includesrc直接拷贝过来;将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测试程序,结果如图

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();
}

标签:cmake,windows,libgtest,dll,gtest,googletest,sample1,搭建
来源: https://blog.csdn.net/qq_42769920/article/details/121198844

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有