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-64 cmake 编译工具,工具文件路径加入到系统环境变量中
下载 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之后,执行mingw32mingw32-make命令

mingw32-make

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

2. 搭建单元测试工程

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

├─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();
                    googletest(也称gtest)是由Google测试技术团队开发的测试框架。为c/c++代码提供了一套优秀的单元测试解决方案。本文介绍使用googletest在windows下从零搭建自己的单元测试工程。0. 环境准备系统:Windows10vscode: https://code.visualstudio.com/mingw-64:https://www.mingw-w64.org/downloads/cmake: https://cmake.org/download/googletes
				
之前也接触过googleTest但是一直没有弄好,总是出各种各样的错误,今天下午再试了试结果还给搞定了。 首先是从GitHub上下载Googletest的源码,用cmake进行编译,准备工作就是先安装好cmake,这个很简单。然后就是通过cmake来编译googletest。这个折腾了我半天,这里我就再演示一边。我把编译好的Googletest删除重新弄一下。 下载googletest GitHub - google/googletest: GoogleTest - Google Test..
gTestgtest简介及简单使用 gtest是一个跨平台(Liunx、Mac OS X、Windows、Cygwin、Windows CE and Symbian)的C++测试框架,有google公司发布。gtest测试框架是在不同平台上为编写C++测试而生成的。 从http://code.google.com/p/googletest/downloads/detail?name=gtest-1.7.0.zip&can=2&q=下载最新的gtest-1.7.0版本 在Windows下编
googletest googletest 是一个由 Google 的测试技术团队开发的测试框架,它考虑到了谷歌的特定需求和限制。无论你使用的是 Linux、Windows 还是 Mac,只要你编写 C++ 代码,googletest 都可以帮到你。它支持任何类型的测试,不只是单元测试googletest安装 #下载gtest,release-1.8.0 git clone https://github.com/google/googletest # gtest编译 cd googletest #生成Makefile文件(先安装cmake,brew install cmake),继续输入命
得益于和萱哥关于单元测试的聊天,让我开始想要了解Google的单元测试框架GoogleTest;以前基于C#反射特性Demo过一个C#的单元测试框架(),所以更想明白Google Test测试框架的实现机制;这期间搞过一段Python,看Python文档时也看到相关的单元测试框架PyUnit,但没有深入研究,有时间深入研究一下。自动化测试框架,主要目的就是自动化调用执行某些测试用例,将执行结果与目标结果进行比较,用以达到测试特定目标的目的。而测试用例的针对目标可能是函数接口,功能
我尝试了一套的gtest配置操作,方法不太主流: 1. 在windows万能的visual studio里建立cmake工程,而不是googletest工程或者一般的空工程。 2. 将gtest作为第三方库引入时,没有把gtest的源码作为子模块和自己的代码一起cmake,而是先把gtest独立build出库文件,再连到自己的代码上。 现在把整个操作过程记录在这里。 Windows下cmake安装 cmake官网 选择最新版的binary 1. 下载 gtest 源码包,并解压,如:/home/hdc/gtest-1.7.0; 2.  编译 gtest 动态库,进入 gtest-1.7.0 目录,编辑 CMakeLists.txt,修改如下几行:      10 option(BUILD_SHAR
首先要说的是,这种编译与安装不是必须的,用户可以自己下载protoc的二进制文件直接使用。因为开发和调试的原因,我经常反复需要编译不同版本的protobuf,例如NCNN用的protobuf3.4.0。因为重复的过程中自己也没有详细记录过,所以这里记录一下备忘。 (I)第一步,下载gmock。 https://codeload.github.com/google/googletest/tar.gz/refs/tags/release-1.11.0https://codeload.github.com/g
Google Test需要编译,同时确保头文件可以被编译器找到。 使用cmake编译: git clone https://github.com/google/googletest.git -b release-1.10.0 cd googletest # Main directory of the cloned rep