编辑推荐: |
本文主要介绍了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));
ASSERT_NE(4,calculation.Add(2, 3));
EXPECT_LT(121, calculation.Add(100, 22));
EXPECT_LE(201, calculation.Add(100, 101));
EXPECT_LE(201, calculation.Add(100, 102));
EXPECT_GT(99, calculation.Add(80, 11));
EXPECT_GE(88, calculation.Add(66, 21));
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);
EXPECT_STRNE("CppUnit Test", calculation.name);
strcpy(calculation.name, "CppUnit Test") ;
EXPECT_STRNE(calculation.name,"cppUnit Test");
ASSERT_STRCASEEQ("cppunit test", calculation.name);
EXPECT_STRCASENE("gppunit test", calculation.name);
}
|
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));
EXPECT_NE(5, calculation.Add(2, 3));
EXPECT_LT(121, calculation.Add(100, 20));
}
TEST(CalcClassTest, minusFuncTest)
{
EXPECT_EQ(-1, calculation.Minus(1, 2));
}
|
2.ASSERT 断言一旦Fail,同一TEST下的其后用例将不再执行,但是对其他的TEST不影响
TEST(CalcClassTest, addFuncTest)
{
EXPECT_EQ(3, calculation.Add(1, 2));
ASSERT_NE(5, calculation.Add(2, 3));
EXPECT_LT(121, calculation.Add(100, 20));
}
TEST(CalcClassTest, minusFuncTest)
{
EXPECT_EQ(-1, calculation.Minus(1, 2));
}
|
|