我的网站是 https://ctestcode.cn ,有许多非常好用的C语言开发工具。
大家可以关注我的公众号 ctestcode 交流更多的C 语言开发的经验。
Google Test语法教程 基础篇(一)
程序员对C语言 C++,进行代码单元测试,最受欢迎的是使用Google Test框架。gtest语法灵活,高效,github上颇有人气。这篇文章将介绍gtest的基础的语法。google官方也有英文文档,但实战例子很少,
开发人员想自学使用也要花不少的精力,本文将结合实际代码,进行实战练习和演示。
语法: EXPECT_TRUE 期待值为真
使用场景: 对真/假的条件进行判定 判定
//期待value等于2
EXPECT_TRUE(value==2);
语法: ASSERT_TRUE, 确保值为真,如果失败时,测试case会直接退出,而EXPECT_TRUE则不会。
终止断言 | 普通判定 | 验证 |
---|---|---|
ASSERT_TRUE(条件); | EXPECT_TRUE(条件); | 验证条件为真 |
ASSERT_FALSE(条件); | EXPECT_FALSE(条件); | 验证条件为假 |
语法: EXPECT_EQ 期待值相等
使用场景:对数值条件进行比较判定
//期待b等于3
int b=3;
EXPECT_EQ(b,3);
终止断言 | 普通判定 | 验证 |
---|---|---|
ASSERT_EQ(val1, val2); | EXPECT_EQ(val1, val2); | val1 == val2 |
ASSERT_NE(val1, val2); | EXPECT_NE(val1, val2); | val1 != val2 |
ASSERT_LT(val1, val2); | EXPECT_LT(val1, val2); | val1 < val2 |
ASSERT_LE(val1, val2); | EXPECT_LE(val1, val2); | val1 <= val2 |
ASSERT_GT(val1, val2); | EXPECT_GT(val1, val2); | val1 > val2 |
ASSERT_GE(val1, val2); | EXPECT_GE(val1, val2); | val1 >= val2 |
语法:EXPECT_STREQ 字符串比较
//期待GetValueStr返回值等于 字符串"TEST0"
EXPECT_STREQ(GetValueStr(),"TEST0");
Fatal assertion | Nonfatal assertion | Verifies |
---|---|---|
ASSERT_STREQ(str1,str2); | EXPECT_STREQ(str1,str2); | the two C strings have the same content |
ASSERT_STRNE(str1,str2); | EXPECT_STRNE(str1,str2); | the two C strings have different contents |
ASSERT_STRCASEEQ(str1,str2); | EXPECT_STRCASEEQ(str1,str2); | the two C strings have the same content, ignoring case |
ASSERT_STRCASENE(str1,str2); | EXPECT_STRCASENE(str1,str2); | the two C strings have different contents, ignoring case |
语法: EXPECT_FLOAT_EQ 浮点数比较
//期待GetValueFloat 返回值等于3.1
EXPECT_FLOAT_EQ(GetValueFloat(),3.1);
语法: EXPECT_NEAR 浮点数范围比较
使用场景: 判断浮点数在某范围内
//期待GetValueFloat返回值,在2.9和3.9之间
EXPECT_NEAR(GetValueFloat(1),3.4,0.5);
浮点数比较特殊,必须使用浮点数宏进行比较
Fatal assertion | Nonfatal assertion | Verifies |
---|---|---|
ASSERT_FLOAT_EQ(val1, val2); | EXPECT_FLOAT_EQ(val1, val2); | the two float values are almost equal |
ASSERT_DOUBLE_EQ(val1, val2); | EXPECT_DOUBLE_EQ(val1, val2); | the two double values are almost equal |
下面的宏,可以进行浮点数范围比较
Fatal assertion | Nonfatal assertion | Verifies |
---|---|---|
ASSERT_NEAR(val1, val2, abs_error); | EXPECT_NEAR(val1, val2, abs_error); | the difference between val1 and val2 doesn't exceed the given absolute error |
基础语法介绍完毕,内容精炼,记住这些,就已经足够进行基础的代码单元测试,进行逻辑判断验证。