概述
gtest使用入门
- 0 使用前准备
- 1 gtest是什么
- 2 gtest的获取和编译
- 3 gtest 单元测试工程的建立
- 4 gtest的简单使用
0 使用前准备
- visual studio集成开发环境
- git 版本控制软件
1 gtest是什么
gtest是Google开发的一个开源单元测试框架,git仓库点击这里获取。主要针对c/c++,gtest有如下特点:
- 提供强大的断言集,支持包括布尔、整型、浮点型、字符串等
- 提供断言方法自定义扩展
- 自动收集测试用例,无需开发者再次组织
- 提供死亡测试功能
- 可以将公共的用例初始化和清理工作放入测试夹具中,由gtest自动调用
- 使用参数化自动生成多个相似的测试用例
2 gtest的获取和编译
在GitHub上获取当前最新的gtest源码,我这里使用的是v1.8.1版本,直接用git clone下载
$ git clone -b release-1.8.1 https://github.com/google/googletest.git
下载好后的代码进入googletest/googletest/msvc/2010目录,里面有一个gtest.sln和gtest-md.sln两个解决方案,gtset.sln是静态运行库解决方案,适合在没有安装vs运行库的环境下执行,gtest-md.sln是使用vs动态运行库的解决方案。由于我们默认的vs解决方案都是使用动态库去运行,所以我们这里就只演示动态库的编译,静态库的方式是一样的。
双击打开gtest-md.sln解决方案,vs会提示我们需要升级,点击确定即可,然后在解决方案管理器里面右键生成,编译gtest库。
一般情况下编译都会通过,编译完成后在msvc/2010/gtest-md目录下生成了我们想要的库文件。
3 gtest 单元测试工程的建立
编译生成好库文件后,我们就可以建立gtest工程来做测试了,首先使用vs创建一个空白的c++项目,选择创建控制台项目,然后在项目中添加gtest的 头文件和库文件。
右键项目–>属性
包含我们从GitHub上下载下来的源码的include文件路径,如下图所示:
然后包含刚才生成的库文件路径,如下图所示:
最后创建main.cpp文件,编写main函数,运行gtest。
main.cp文件最简单的源码如下所示:
#include <gtest/gtest.h>
#include <stdlib.h>
#include <stdio.h>
class CGlobalEnvironment :public testing::Environment
{
public:
virtual void SetUp()
{
//TODO: Do something before every case
}
virtual void TearDown()
{
//TODO: Do something after every case
}
};
int main(int argc, char** argv)
{
testing::InitGoogleTest(&argc, argv);
testing::AddGlobalTestEnvironment(new CGlobalEnvironment());
testing::FLAGS_gtest_filter = "*";
RUN_ALL_TESTS();
system("PAUSE"); //命令行停在当前窗口
return 0;
}
由于gtest是用c++编写,所以刚开始要调用类初始化,初始化接收用户命令行传入参数,具体参数后续讲解,RUN_ALL_TESTS();函数会自动运行我们做的测试用例集,system(“PAUSE”);函数会让命令行窗口停留,以便观察具体的测试结果。没有测试用例集的时候,我们运行该函数,控制台的输出如下:
[==========] Running 0 tests from 0 test cases.
[==========] 0 tests from 0 test cases ran. (2 ms total)
[ PASSED ] 0 tests.
请按任意键继续. . .
至此,一个基本的gtest单元测试环境就搭建好了。
4 gtest的简单使用
使用gtest测试我们需要将被测试的源码加入到测试工程中来,然后使用TEST宏来编写对应的测试用例,TEST宏接收两个参数,第一个是测试用例集的名称,第二个是测试用例的名称。我们做单元测试的时候会运行很多的测试用例集,其中每个测试用例集里面又有很多的测试用例,gtest会自动按照我们的每个测试用例集来运行测试用例,比如我们编写一个简单的测试用例如下:
/* 测试用例集的名字 当前测试用例的名字 */
TEST(demoTestCase, demoTest)
{
int a =0;
for (a = 0; a < 100; a++)
{
EXPECT_LT(a, 500);
}
}
这个测试用例是判断a是否小于500,显然当a<100是时候,是小于的,测试肯定能通过,我们运行测试得到的结果如下:
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from demoTestCase
[ RUN ] demoTestCase.demoTest
[ OK ] demoTestCase.demoTest (0 ms)
[----------] 1 test from demoTestCase (2 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (6 ms total)
[ PASSED ] 1 test.
请按任意键继续. . .
到这里,简单的gtest单元测试我们就用起来了,后续会讲解更多的gtest使用方法,欢迎关注。
最后
以上就是顺心夏天为你收集整理的gtest使用入门0 使用前准备1 gtest是什么2 gtest的获取和编译3 gtest 单元测试工程的建立4 gtest的简单使用的全部内容,希望文章能够帮你解决gtest使用入门0 使用前准备1 gtest是什么2 gtest的获取和编译3 gtest 单元测试工程的建立4 gtest的简单使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复