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

最近在做白盒测试,没怎么接触C++和linux,现在要做C++的白盒测试,确定的方案是使用GTEST。
环境在linux上搭建,就学习了起来,边学边用,并记一下笔记备忘。

备注:当前linxu环境默认已配置好c++的一些编译环境,比如CMake、Make等。

二、源码获取

git仓库地址: https://github.com/google/googletest

有git账号的可以使用git直接clone,没有的可以下载zip,本人这边linux虚拟机下没有配置git,所以直接下载zip。
本人下载1.10.x版本编译不通过,另外下载了1.8.1版本才编译通过,试了1.8.0版本也可以编译通过,
建议下载1.8.1版本。

三、源码编译

推送下载下来的源码到linxu下,解压
在这里插入图片描述
进入googletest-release-1.8.1目录,执行命令 cmake CMakeLists.txt,生成Makefile文件,
(在该目录下编译会生成mock程序和gtest程序,如果进入googletest-release-1.8.1/googletest目录编译,则只编译gtest程序)
在这里插入图片描述
再执行make命令,生成四个静态库:libgtest.a libgtest_main.a,libgmlck.a, libgmock_main.a
在这里插入图片描述
通过命令

find . -name "*.a"

可以查看如下文件是否生成:
在这里插入图片描述

安装gmock和gtest到系统:

sudo make install

因为我们在googletest-release-1.8.1下编译和执行安装,所以默认会安装gmock和gtest,gmock后面打桩的时候会用到。

  • 注意sudo权限。

在这里插入图片描述
输入命令:

ls -l /usr/local/lib

查看是否安装成功,有如下四个文件,说明gtest安装成功,并安装了gmock模块
在这里插入图片描述

五、执行谷歌自带测试用例

我们还没有添加我们自己的源码,和针对源码的测试用例,但是谷歌已经写好了一些例子,放在如下路径

googletest-release-1.8.1/googletest/samples  // 测试用例和待测源码所在目录
googletest-release-1.8.1/googletest/src/gtest_main.cc // 测试主程序入口

下面我执行samples下的sample1_unittest.cc这个测试集,里面共有6个用例,3个是阶乘的用例,三个是判断是否是质数的用例。

先使用cd命令切换到samples目录:

cd googletests/samples

编译测试用例和测试主程序:

g++ ../src/gtest_main.cc sample1.cc sample1_unittest.cc -o test -lgtest -lgmock -lpthread -std=c++11

测试结果:
在这里插入图片描述

六、几点说明

  • gtest_main.cc :测试主程序入口,不是我们待测源码的主程序入口,所以整个工程其实可能有两个main函数,一个是测试的main,一个可能是待测源码的main,两个包含main的文件不能同时编译,因为一个执行程序只能有一个入口。
  • sample1.cc:待测源码,就是测试对象,我们就是要对个源码进行白盒测试。
  • sample1_unittest.cc:测试用例,里面就是我们针对源码写的测试用例脚本。
  • 编译时要源码、测试主程序、测试用例一起编译(可以使用Makefile来管理工程的编译,就不用命令行输入那么长命令进行编译)
  • 可以参考谷歌原生的例子,先学习学习谷歌的大神怎么写用例的。
文章目录一、概述二、源码获取三、源码编译四、安装五、执行谷歌自带测试用例六、几点说明一、概述最近在做白盒测试,没怎么接触C++和linux,现在要做C++的白盒测试,确定的方案是使用GTEST。环境在linux上搭建,就学习了起来,边学边用,并记一下笔记备忘。备注:当前linxu环境默认已配置好c++的一些编译环境,比如CMake、Make等。二、源码获取git仓库地址: https://github.com/google/googletest有git账号的可以使用git直接clone,没有的 1. 下载 gtest 源码包,并解压,如:/home/hdc/gtest-1.7.0; 2.  编译 gtest 动态库,进入 gtest-1.7.0 目录,编辑 CMakeLists.txt,修改如下几行:      10 option(BUILD_SHAR
1. 再次捡起GTest 以前的老资料:http://blog.csdn.net/printf1998/archive/2011/01/02/6112922.aspx 新的资源:http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html 2. 运行GoogleTest Sample在VMware/Redhat ent
之前也接触过googleTest但是一直没有弄好,总是出各种各样的错误,今天下午再试了试结果还给搞定了。 首先是从GitHub上下载Googletest的源码,用cmake进行编译,准备工作就是先安装好cmake,这个很简单。然后就是通过cmake来编译googletest。这个折腾了我半天,这里我就再演示一边。我把编译好的Googletest删除重新弄一下。 下载googletest GitHub - google/googletest: GoogleTest - Google Test..
Google Test 1.10 之后,Google Test 不再提供计时器类。但是,您可以使用 `std::chrono` 库提供的计时器来测试代码执行时间。 以下是一个示例程序,演示如何使用 `std::chrono` 库测试代码执行时间: ```cpp #include <gtest/gtest.h> #include <chrono> TEST(MyTestSuite, MyTestCase) { auto start = std::chrono::high_resolution_clock::now(); // 调用需要测试代码的函数 auto end = std::chrono::high_resolution_clock::now(); auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start); std::cout << "Code execution time: " << duration.count() << "ms" << std::endl; // 进行测试断言 ASSERT_TRUE(true); 在测试用例中,我们使用 `std::chrono::high_resolution_clock::now()` 获取当前时间作为开始时间,执行需要测试的代码,然后再次调用 `std::chrono::high_resolution_clock::now()` 获取当前时间作为结束时间。然后,我们计算时间差,并将其转换为毫秒。最后,我们可以将执行时间输出到控制台,并进行测试断言。 需要注意的是,`std::chrono::high_resolution_clock` 可能会因平台或编译器的不同而有所不同。如果您需要更高精度的计时器,可以使用 `std::chrono::steady_clock`。
2301_80206364: 运行cmake -G "MinGW Makefiles" ..时报错如下,请问是什么原因呢? CMake Error: Could not create named generator MinGW Makefiles Generators * Unix Makefiles = Generates standard UNIX makefiles. Ninja = Generates build.ninja files. Ninja Multi-Config = Generates build-<Config>.ninja files. CodeBlocks - Ninja = Generates CodeBlocks project files. CodeBlocks - Unix Makefiles = Generates CodeBlocks project files. CodeLite - Ninja = Generates CodeLite project files. CodeLite - Unix Makefiles = Generates CodeLite project files. Eclipse CDT4 - Ninja = Generates Eclipse CDT 4.0 project files. Eclipse CDT4 - Unix Makefiles= Generates Eclipse CDT 4.0 project files. Kate - Ninja = Generates Kate project files. Kate - Unix Makefiles = Generates Kate project files. Google Test(GTEST)使用入门(2)- 原生例子分析 太簇有六: 感谢分享,对小白来说很有用表情包