白盒测试之gtest第一个demo
认识gtest工具后,关于它的使用,下面将用一个demo程序演示一下gtest的用法以及成果展示。
一、需要测试的C++代码:
#include "myfunction.h" //计算和的函数
int add(int a, int b)
{
int c = a + b; return c;
} //计算最小公约数
int Foo(int a, int b)
{
if (a == || b == )
{
throw "don't do that";
}
int c = a % b;
if (c == )
return b;
return Foo(b, c);
} //判断是否为素数
bool IsPrime(int n)
{
if (n <= ) return false; if (n % == ) return n == ; for (int i = ; ; i += )
{
if (i > n/i) break; if (n % i == ) return false;
} return true;
}
该C++文件中包含了3个功能函数,计算和的函数,计算最小公约数的函数,判断素数的函数。下面我将建一个功能对该功能函数进行单元测试。
二、使用gtest库创建单元测试工程:
创建一个C++控制台下程序,将gtest的头文件和库的目录在编译器中设置好:

将gtest.lib库添加到工程:

编写测试用例程序:
#ifndef __TEST_CASE__
#define __TEST_CASE__ #include <gtest/gtest.h>
#include "myfunction.h"
//#include <list> TEST(SumCase, SumTemp)
{
EXPECT_EQ(, add(,)); EXPECT_EQ(, add(,));
} TEST(FooCase, FooTemp)
{
EXPECT_EQ(, Foo(,)); EXPECT_EQ(, Foo(,));
} TEST(IsPrimeCase, IsPrimeTemp)
{
EXPECT_TRUE(IsPrime()); EXPECT_TRUE(IsPrime()); EXPECT_TRUE(IsPrime());
} #endif //__TEST_CASE__
添加程序入口函数:
#include <tchar.h>
#include "testcase.h" int _tmain(int argc, _TCHAR* argv[])
{
testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS();
}
到此时,代码已经完成,且编译通过。
三、执行测试程序,查看测试结果:

四、分析测试结果:
先看第一条测试用例:
TEST(SumCase, SumTemp)
{
EXPECT_EQ(, add(,)); EXPECT_EQ(, add(,));
}
add(1,2)的结果应该是3,而不是5。对应的测试结果:

第二行代码,add(1,2)的期望值是5,实际值应该是3,所以测试结果已经清楚的列出期望值与实际值。所以执行失败,且已经用红色的字符提示。其他的测试用例结果,可以参照查看。
五,总结:
通过该demo程序,可以简单的了解gtest的用法。关于gtest的强大之处,此文并没有展现出来。gtest有很多断言机制、事件机制等,极大的增加了gtest的单元测试中的灵活和强大之处。gtest还有一个好处是完全开源,所有感兴趣的同学可以下载源码深入研究,肯定会有更大的收获。
白盒测试之gtest第一个demo的更多相关文章
- 白盒测试之gmock入门篇
一.gmock是什么 gmock是google公司推出的一款开源的白盒测试工具.gmock是个很强大的东西,测试一个模块的时候,可能涉及到和其他模块交互,可以将模块之间的接口mock起来,模拟交互过程 ...
- 白盒测试之JUnit与SpringTest的完美结合
通过白盒的单元测试可以验证程序基本功能的有效性,从而保证整个系统的质量,功在一时,利在千秋.目前80%以上公司后台还是基于java,尤其是后台大量采用Spring框架,我们这里采用Junit和Spri ...
- GTest Google的一种白盒单元测试框架 开源项目
GTest为google开源的白盒单元测试跨平台测试框架,含丰富的断言.类型参数化测试.死亡测试.以及其他的测试选项设置.文件保存等,以下将对该项目C++的实现进行简要的分析,作为学习记录备份. 基本 ...
- 商业级别Fortify白盒神器介绍与使用分析
转自:http://www.freebuf.com/sectool/95683.html 什么是fortify它又能干些什么? 答:fottify全名叫:Fortify SCA ,是HP的产品 ,是一 ...
- 白盒-CNN纹理深度可视化: 使用MIT Place 场景预训练模型
MIT发文:深度视觉的量化表示................ Places2 是一个场景图像数据集,包含 1千万张 图片,400多个不同类型的场景环境,可用于以场景和环境为应用内容的视觉认知任务. ...
- JAVA语言搭建白盒静态代码、黑盒网站插件式自动化安全审计平台
近期打算做一个插件化的白盒静态代码安全审计自动化平台和黑盒网站安全审计自动化平台.现在开源或半开源做黑盒网站安全扫描的平台,大多是基于python脚本,安全人员贡献python脚本插件增强平台功能.对 ...
- 浅析白盒审计中的字符编码及SQL注入
尽管现在呼吁所有的程序都使用unicode编码,所有的网站都使用utf-8编码,来一个统一的国际规范.但仍然有很多,包括国内及国外(特别是非英语国家)的一些cms,仍然使用着自己国家的一套编码,比如g ...
- 移动測试技术保护源码!解码全球首款移动端白盒測试工具ThreadingTest (文章转自己主动点科技)
作者 智晓锋 - 2014/07/14 自从斯诺登曝光美监听丑闻事件之后,我国政府就将信息安全问题上升到了国家安全的高度.基于此.国内的一家创业公司推出了智能型Android真机白盒測试以及开发辅助类 ...
- SafeNet推出行业首款白盒password软件保护解决方式
数据保护领域的全球率先企业SafeNet公司日前宣布,推出行业首款採用白盒安全技术的的软件保护方案.SafeNet 圣天诺 软件授权与保护解决方式如今纳入了新的功能,可在"白盒" ...
随机推荐
- 【转载】Ssh整合开发介绍和简单的登入案例实现
Ssh整合开发介绍和简单的登入案例实现 Ssh整合开发介绍和简单的登入案例实现 一 介绍: Ssh是strtus2-2.3.1.2+ spring-2.5.6+hibernate-3.6.8整合的开 ...
- Biba模型简介
上周上信息安全的课,老师留了个Biba模型的作业.自己看书了解了一下,记录如下. 参考资料:石文昌<信息系统安全概论第2版> ISBN:978-7-121-22143-9 Biba模型是毕 ...
- TYVJ P1016 装箱问题
P1016 装箱问题 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 太原成成中学第2次模拟赛 第三道 描述 有一个箱子容量为v(正整数,o≤v≤20000) ...
- lintcode : 二叉树的序列化和反序列化
题目 二叉树的序列化和反序列化 设计一个算法,并编写代码来序列化和反序列化二叉树.将树写入一个文件被称为“序列化”,读取文件后重建同样的二叉树被称为“反序列化”. 如何反序列化或序列化二叉树是没有限制 ...
- TCL语言笔记:TCL中的数学函数
一.TCL数学函数列表 函数名 说明 举例 abs(arg) 取绝对值 set a –10 ; #a=-10 set a [expr abs($a)]; # a=10 acos(arg) 反余弦 s ...
- QT源码解析(一) QT创建窗口程序、消息循环和WinMain函数
QT源码解析(一) QT创建窗口程序.消息循环和WinMain函数 分类: QT2009-10-28 13:33 17695人阅读 评论(13) 收藏 举报 qtapplicationwindowse ...
- Android:密码显示隐藏
效果: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android= ...
- 对象的继承关系在数据库中的实现方式和PowerDesigner设计
原文:对象的继承关系在数据库中的实现方式和PowerDesigner设计 在面向对象的编程中,使用对象的继承是一个非常普遍的做法,但是在关系数据库管理系统RDBMS中,使用的是外键表示实体(表)之间的 ...
- 转Java 回调函数的理解
所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数.例如Win32下的窗口过程函数就是一个典型的回调函数.一般说来,C ...
- (四)CSS选择器和派生选择器
CSS派生选择器允许你根据文档的上下文关系来确定某个标签的样式.在学习派生之前,先来了解基本的CSS选择器.前面的文章中提到过下图,选择器的位置如下所示: CSS选择器 分为几种基本选择器:元素选择器 ...