gtest基础使用03:基本数值类型的检查

一、环境信息

  1. Visual Studio 2019
  2. Windows 10
  3. 前导文档:gtest基础使用02

二、基本数值类型的检查

0. 测试的目标对象
  1. 测试的目标对象是Practice项目中的类Calc,配套的测试文档为Practice_gtest项目中的 ClassCalcTest.cpp
    在这里插入图片描述
  2. 其中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);
};
  1. 其中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. 数值型检查
  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_*
  1. 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
}

在这里插入图片描述

  1. 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
}

在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值