小白win10系统安装gtest流程

小白win10系统安装gtest流程

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

vs code安装

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

g++安装

使用的是如下的链接:
g++下载
版本选择见下图:
小白win10系统安装gtest流程_第1张图片

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

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

#include 

int main(int argc, char* argv[])
{
    printf( "hello world\n");

    return 0;
}

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

跑通的界面如下图:
小白win10系统安装gtest流程_第3张图片
这时我发现了一个小问题,执行a.exe时很慢,并且右下角有弹窗,如下图:
小白win10系统安装gtest流程_第4张图片
解决方案是进入Windows 安全中心,如下图:
小白win10系统安装gtest流程_第5张图片
然后将云提供的保护关掉,如下图:
小白win10系统安装gtest流程_第6张图片
关了就好了。

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跑通的情况如下图:
小白win10系统安装gtest流程_第7张图片

然后不需要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里,如下图:

小白win10系统安装gtest流程_第8张图片

在kata文件夹里建好include和src文件夹,以及CmakeLists.txt,如下图:

小白win10系统安装gtest流程_第9张图片
接下来是很关键的写CmakeLists.txt文件。如下图:
小白win10系统安装gtest流程_第10张图片
源码见:

#设置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这种结构:
小白win10系统安装gtest流程_第11张图片
另外的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

结果就出来了,如下图:
小白win10系统安装gtest流程_第12张图片
每次都要执行这3条指令好麻烦,在\kata\里写个build.bat,内容如下:

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

如下图:
小白win10系统安装gtest流程_第13张图片

结果如下:
小白win10系统安装gtest流程_第14张图片

你可能感兴趣的:(c++,开发语言,单元测试,visual,studio,code,vscode)