添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

假设我新安装了一个win10系统,想在上面跑通一个gtest测试用例,那需要依次安装visual studio code、g++、cmake、git、gtest。

vs code安装

直接在 vs code官网 下载,这个不难。

g++安装

使用的是如下的链接:
g++下载
版本选择见下图:
在这里插入图片描述

注1:之前下载的那个版本不行,后面make的时候会出现不认识mutex的问题。这个问题的解决办法是在如下链接看到的: mingw64的posix版本详解
注2:一开始参考的这篇文章: Windows下如何安装MinGW ,但是它的版本不对,所以不要按这个链接下载。但是可以按这个链接的添加环境变量的方式添加变量。
注3:浩哥在帮我解决报错的时候,把lib文件夹也加进去了,如下图:
在这里插入图片描述
注4: 添加完环境变量后需要 重启 下终端才能生效。

这时候就可以跑一个hello.cpp试试了。代码如下:

#include <stdio.h>
int main(int argc, char* argv[])
    printf( "hello world\n");
    return 0;
 

注:上面是C语言的写法,C++使用iostream和std::cout。

跑通的界面如下图:
跑通第1个hello_world程序
这时我发现了一个小问题,执行a.exe时很慢,并且右下角有弹窗,如下图:
在这里插入图片描述
解决方案是进入Windows 安全中心,如下图:
在这里插入图片描述
然后将云提供的保护关掉,如下图:
在这里插入图片描述
关了就好了。

cmake安装

参考链接是:Windows 10环境下如何安装CMake?(更新时间:2021.9.13)

注:安装好了后,用终端测试时,需要重新开终端。
安装好了的截图如下:
在这里插入图片描述
注:编译googletest的时候在终端用

cmake -G "MinGW Makefiles" .. 
//这是cmake提供的方法,和cmake ..是一样的

注:在googletest里直接编译不行,得用cmake gui,见windows 下使用 cmake-gui 来编译第三方库的源代码
这里不行的原因可能是googletest比较大,里面有很多未知的东西,可能是某个文件导致了这条指令的失败。下面我们自己写的测试文件的CMakeLists.txt里,用cmake -G “MinGW Makefiles” …是可以的。 盲猜googletest里可能需要加更多的参数。

git安装

参考了如下的文档,基本都是默认配置,一路点击next即可:
win10系统Git安装教程『纯小白教程超详细』

gtest安装

这个最麻烦,参考了很多文档,请教了师父,最后总结出一份方法。随便找个目录(我找的是C:\Users\zhanghao\Downloads\code),打开终端。然后执行如下操作:

$ git clone https://github.com/google/googletest.git 
$ cd googletest //进的是外层,里面还有一层googletest,里面那层用cmake gui会error,必须在这里做
$ mkdir build
$ cd build
$ 使用桌面的cmake gui做预编译。方法见上面。
$ mingw32-make //其实就是make

cmake和make跑通的情况如下图:
在这里插入图片描述

然后不需要install,在linux系统中,这步的目的是将C:\Users\zhanghao\Downloads\code\googletest\build\lib文件夹添加到/usr/local中,方便所有用户使用,这样就不用在CMkeLists.txt里增加这个库的链接。win10中可能也是同样的操作。但是我们手动做是一样的。
上述make了之后,就会在\googletest\build\lib里生产4个文件,我们需要的是其中2个二进制文件:libgtest.a和libgtest_main.a(如果自己写main函数,是需要的)。而另外2个文件是和mock相关的,我们不需要。这2个二进制文件才是我们要提取的gtest的精华。
方便起见,连同这4个文件一起,我们将这个lib拷贝走,总结步骤如下:

$ 在C:\Users\zhanghao\Downloads\code下新建kata文件夹。这才是我们最后写测试用例的地方。
$ 在kata里建一个3rd文件夹,将上述的\googletest\build\lib文件夹拷贝到3rd里。
$ 将\googletest\googletest\include文件夹拷贝到3rd里,如下图:
在kata文件夹里建好include和src文件夹,以及CmakeLists.txt,如下图:

在这里插入图片描述
接下来是很关键的写CmakeLists.txt文件。如下图:
在这里插入图片描述
源码见:

#设置cmake最小版本,要比本地的版本低。固定写法
cmake_minimum_required(VERSION 3.5)
#建一个project,取名叫kata
project(kata)
#设置cmake时要include的文件路径
include_directories(
    ${CMAKE_CURRENT_SOURCE_DIR}/3rd/include
    ${CMAKE_CURRENT_SOURCE_DIR}/include
#指定要链接的文件目录(这里并未执行链接)。因为lib下的.a文件都make过了,所以只需要链接一下即可。
link_directories(
    ${CMAKE_CURRENT_SOURCE_DIR}/3rd/lib
#设置要编译的文件的名称,即src下面所有的.cpp文件都需要编译,他们整体取了个名字叫src_files
file(GLOB_RECURSE src_files
    ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp
#将上述的src_files添加到可执行文件里,生产的可执行文件叫${PROJECT_NAME}。固定写法
add_executable(${PROJECT_NAME} ${src_files})
#告诉gcc去gtest这个目录(即link_directories)寻找lib库。(gtest这个名字是gcc取的)
target_link_libraries(${PROJECT_NAME} gtest)

这里也参考了单元测试其一:gtest。但是我没执行它的sudo make install,其余地方它的写法和我的方法也很像,但是它最后加了

add_test(
  Test  #测试名
  mytest
)#关键!添加测试

正是因为它将gtest放在了cmake里,所以它最后的打印没有下图的run,ok这种结构:
在这里插入图片描述
另外的2篇文章应该也是可以用的,需要我好好研究:

  1. Win10下VScode C++环境配置,Cmake与Gtest的简易使用
  2. 谷歌单元测试GTest测试方法使用

编写完CMakeList后,还需要写测试用例,在下图的src目录下创建main.cpp和test.cpp文件:
在这里插入图片描述
其中,main.cpp的内容是:

#include "gtest/gtest.h"
int add(int a, int b) 
    return a + b;
//编写测试case
TEST(testCase, test1) 
    EXPECT_EQ(add(2, 4), 6);   //判断结果是不是等于5,EXPECT_EQ表示 "等于"
int main(int argc, char** argv) 
    testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();

test.cpp的内容是:

#include "gtest/gtest.h"
int add2(int a, int b) 
    return a + b;
//编写测试case
TEST(testCase, test0) 
    EXPECT_EQ(add2(2, 3), 5);   //判断结果是不是等于5,EXPECT_EQ表示 "等于"

然后再在\kata\build目录下打开cmd或者PowerShell(按shfit的同时右键)(注:不知道为啥git bash here不行,不能输出结果)。
执行如下命令:

cmake -G "MinGW Makefiles" ..
mingw32-make.exe
.\kata.exe

结果就出来了,如下图:
在这里插入图片描述
每次都要执行这3条指令好麻烦,在\kata\里写个build.bat,内容如下:

start cmd /k "cd build && cmake -G "MinGW Makefiles" .. && mingw32-make.exe && .\kata.exe"

结果如下:
在这里插入图片描述

本文来自个人博客,本文主要简单介绍了GTest的源代码安装与使用以及事件机制,希望对您的学习有所帮助。1、安装源代码下载gtest,release-1.8.0gitclonehttps://github.com/google/googletestgtest编译cdgoogletest生成Makefile文件(先安装cmake,brewinstallcmake),继续输入命令编译:cmakeCMakeLists.txt执行make,生成两个静态库:libgtest.alibgtest_main.amake拷贝到系统目录,注意,如果下诉目录位置在不同版本位置有变动,用find.-name"libg
1      gettext gettext 是GNU国际化与本地化(i18n)函数库。它常被用于编写多语言程序。 程序源代码需要进行修改以响应 GNU gettext 请求。多数编程语言均已通过字符封装的方式实现了对其的支持。为了减少输入量和代码量,此功能通常以标记别名 _ 的形式使用,所以例如以下C语言代码: printf(ge 我尝试了一套的gtest配置操作,方法不太主流: 1. 在windows万能的visual studio里建立cmake工程,而不是googletest工程或者一般的空工程。 2. 将gtest作为第三方库引入时,没有把gtest的源码作为子模块和自己的代码一起cmake,而是先把gtest独立build出库文件,再连到自己的代码上。 现在把整个操作过程记录在这里。 Windows下cmake安装 cmake官网 选择最新版的binary
首先要说的是,这种编译与安装不是必须的,用户可以自己下载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
# 克隆仓库 # 慢的话就上proxy git clone https://github.com/google/googletest.git --config https.proxy=https://ip:port git clone https://github.com/google/googletest.git cd googletest mkdir build cmake .. -DB
安装gtest可以通过两种方式:源码安装和包管理器安装。下面是源码安装的步骤: 1. 确保cmake已经安装。 2. 下载gtest源码:git clone https://github.com/google/googletest 3. 进入gtest目录并创建build目录:cd googletest && mkdir build 4. 进入build目录并执行cmake:cd build && cmake .. 5. 执行make命令编译:make 6. 执行sudo make install命令安装:sudo make install 7. 将生成的两个静态库文件libgtest_main.so和libgtest.so拷贝到/usr/local/lib/目录下,并执行ldconfig:sudo cp lib/libgtest*.so /usr/local/lib/ && sudo ldconfig 8. 将gtest的头文件拷贝到/usr/include目录下:sudo cp -a include/gtest /usr/include 9. 编写一个测试文件并编译运行,运行成功:g++ -std=c++11 test.cpp -lgtest -lpthread ./a.out 注意:如果你使用的是包管理器安装gtest,那么安装步骤会有所不同。