您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 
 订阅
gtest基础使用:基本数值类型的检查
 
 
   次浏览      
 2023-12-25
 
编辑推荐:
本文主要介绍了gtest基础使用,基本数值类型的检查相关知识。希望对你的学习有帮助。
本文来自于CSDN,由火龙果软件Linda编辑、推荐。

一、环境信息

Visual Studio 2019

Windows 10

前导文档:gtest基础使用02

二、基本数值类型的检查

0. 测试的目标对象

测试的目标对象是Practice项目中的类Calc,配套的测试文档为Practice_gtest项目中的 ClassCalcTest.cpp

其中Calc.h的内容为

class Calc
{
public:
	char name[10];
	int  Add(int a, int b);
	int  Minus(int a, int b);
	int  Multi(int a, int b);
	float Divide(float a, float b);
};

 

其中Calc.cpp的内容为


#include "Calc.h"

int Calc::Add(int a, int b)
{
	return a + b;
}

int Calc::Minus(int a, int b)
{
	return a - b;
}

int Calc::Multi(int a, int b)
{
	return a * b;
}

float Calc::Divide(float a, float b)
{
	return a / b;
}

 

1. 数值型检查

对于数值型,EXPECT , ASSERT断言中可用的检查项包括:

(1) EQ : equal(预期值和实际值相等)

(2) NE : Not Equal(预期值和实际值不相等)

(3) LT : Less Than(预期值小于实际值)

(4) LE : Less than or equal to(预期值小于等于实际值)

(5) GT : Great than(预期值大于实际值)

(6) GE : Great than or equal to(预期值大于等于实际值)

具体示例和运行结果如下:

#include "pch.h"
#include "Calc.h"

Calc calculation;

TEST(CalcClassTest, addFuncTest) //数值比较
{
	EXPECT_EQ(3,calculation.Add(1, 2)); //EQ: equal

	ASSERT_NE(4,calculation.Add(2, 3)); //NE: not equal 

	EXPECT_LT(121, calculation.Add(100, 22)); //LT: Less Than

	EXPECT_LE(201, calculation.Add(100, 101)); //LE: Less than or Equal to 
	EXPECT_LE(201, calculation.Add(100, 102));

	EXPECT_GT(99, calculation.Add(80, 11)); //GT: Great Than

	EXPECT_GE(88, calculation.Add(66, 21)); //GE: Great than or Equal to
	EXPECT_GE(88, calculation.Add(66, 22));
}

2. 布尔值检查

对于布尔型,EXPECT , ASSERT断言中可用的检查项包括:

(1) TRUE,运行结果为True/非0

(2) FALSE,运行结果为False/0

TEST(CalcClassTest, minusFuncTest)
{
	EXPECT_TRUE(calculation.Minus(10, 7));
	ASSERT_FALSE(calculation.Minus(2, 3));
}

3. 字符串检查

对于字符串,EXPECT , ASSERT断言中可用的检查项包括:

(1) STREQ : string equal 比较的两个字符串是相同的

(2) STRNE : string not equal 比较的两个字符串不相同

(3) STRCASEEQ : string equal ignore case 忽略大小写,比较的两个字符串相同

(4) STRCASENE : string not equal ignore case 忽略大小写,比较的两个字符串不同

#include "pch.h"
#include "Calc.h"

Calc calculation;
TEST(StringTest, BasicTest)
{
	strcpy(calculation.name,"Google Test"); 

	EXPECT_STREQ("Google Test", calculation.name);  //Expected=Goolge Test, Actual=Google Test
	EXPECT_STRNE("CppUnit Test", calculation.name); //Expected=CppUnit Test,Actual=Google Test

	strcpy(calculation.name, "CppUnit Test") ;
	EXPECT_STRNE(calculation.name,"cppUnit Test"); //Expected=CppUnit Test, Actual=cppUnit Test

	ASSERT_STRCASEEQ("cppunit test", calculation.name);//Expected=cppunit test,Actual=CppUnit Test
	EXPECT_STRCASENE("gppunit test", calculation.name);//Expected=gppunit test,Actual=CppUnit Test

}

 

4. 浮点型检查

对于浮点型数据,可用的检查项是 FLOAT_EQ ,同时还可以通过 NEAR 设定误差范围。浮点型不能使用 EQ

#include "pch.h"
#include "Calc.h"

Calc calculation;

TEST(CalcClassTest, DivideFuncTest)
{
	EXPECT_FLOAT_EQ(0.2, calculation.Divide(0.04, 0.2));
	EXPECT_NEAR(0.01, calculation.Divide(0.03, 2), 0.01) << "Expected=0.01,Actual=0.015,ErrorRange=0.01";
	EXPECT_EQ(0.2, calculation.Divide(0.04, 0.2)) << "Expected=0.2,Actual=0.2,so this is a pass case";
}

 

5. 自定义打印信息

可以通过 << 自定义打印信息,当case运行失败时,会打印这些自定义信息,以便进行问题的分析定位

#include "pch.h"
#include "Calc.h"

Calc calculation;

TEST(CustomOutputInfo, BasicTest)
{
	ASSERT_EQ(6, calculation.Minus(7, 2))<<"Expected=5,Actual result should be 5,so this is a pass case";
}

6. EXPECT_* 与 ASSERT_*

EXPECT 断言Fail后,同一TEST下的其后用例继续执行

TEST(CalcClassTest, addFuncTest) //数值比较
{
	EXPECT_EQ(3, calculation.Add(1, 2)); //Pass

	EXPECT_NE(5, calculation.Add(2, 3)); //Fail

	EXPECT_LT(121, calculation.Add(100, 20)); //Fail
}

TEST(CalcClassTest, minusFuncTest)
{
	EXPECT_EQ(-1, calculation.Minus(1, 2)); //Fail
}

2.ASSERT 断言一旦Fail,同一TEST下的其后用例将不再执行,但是对其他的TEST不影响

TEST(CalcClassTest, addFuncTest) //数值比较
{
	EXPECT_EQ(3, calculation.Add(1, 2)); //Pass

	ASSERT_NE(5, calculation.Add(2, 3)); //Fail

	EXPECT_LT(121, calculation.Add(100, 20)); //Fail
}

TEST(CalcClassTest, minusFuncTest)
{
	EXPECT_EQ(-1, calculation.Minus(1, 2)); //Fail
}

 

   
次浏览       
相关文章

微服务测试之单元测试
一篇图文带你了解白盒测试用例设计方法
全面的质量保障体系之回归测试策略
人工智能自动化测试探索
相关文档

自动化接口测试实践之路
jenkins持续集成测试
性能测试诊断分析与优化
性能测试实例
相关课程

持续集成测试最佳实践
自动化测试体系建设与最佳实践
测试架构的构建与应用实践
DevOps时代的测试技术与最佳实践

最新活动计划
SysML和EA系统设计与建模 7-26[特惠]
Python、数据分析与机器学习 8-23[特惠]
软件架构设计方法、案例与实践 8-23[特惠]
嵌入式软件架构设计 8-22[线上]
Linux内核编程及设备驱动 7-25[北京]
 
 
最新文章
大数据平台测试
微服务架构下的测试之道
从零开始掌握微服务软件测试
如何进行测试需求分析:从接收需求到用例设计
python_selenium自动化测试框架
最新课程
测试需求分析与测试用例设计
性能测试方法与技术
自动化测试框架设计高级实践
接口自动化测试方法与工具
软件测试方法与实践(贯穿案例)
更多...   
成功案例
某支付企业 单元测试与重构培训
北京 用户体验、可用性测试与评估
某军工研究单位 自动化测试方法、案例与工具
知名消费金融公司 探索性测试与测试分析
北京 航天科工某子公司 软件测试架构师
更多...