基本术语
- 断言(assert)
使用断言验证被测代码的行为,检查语句是否为真,
作用:如果它的条件返回错误,则终止程序运行 - 基本断言
致命断言 | 非致命断言 | 验证 |
---|---|---|
ASSERT_TRUE(condition) | EXPECT_TRUE(condition) | condition为true |
ASSERT_FALSE(condition) | EXPECT_FALSE(condition) | condition为false |
两者的区别为:当他们失败时,ASSERT产生一个致命错误,从当前函数退出,EXPECT产生一个非致命错误,允许函数继续运行,出现断言失败,意味着测试失败
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 |
4 浮点数比较
致命断言 | 非致命断言 | 验证 |
---|---|---|
ASSERT_FLOAT_EQ | EXPECT_FLOAT_EQ | 单精度浮点值相等 |
ASSERT_DOUBLE_EQ | EXPECT_DOUBLE_EQ | 双精度浮点值相等 |
ASSERT_NEAR | EXPECT_NEAR | 浮点值接近(第3个参数为误差阈值) |
编写单元测试的步骤
常规的测试单元可以由3个文件构成
sample.h
sample.c
sampleTest.c
其中sample.c 中存放被测试的函数
int ADD(int a,int b)
{
int c;
c = a+b;
return c;
}
sampleTest中存放测试中测试代码
下面写一个简单的测试代码
#include<gtest/gtest.h>
extern int ADD(int a,int b);
TEST(testCase,case0)
{
EXPECT_EQ(3,ADD(1,2))
}
TEST(testCase,case1)
{
EXPECT_EQ(8,ADD(4,5))
}
gtest通过测试用例对测试结果进行分组,即TEST()的第一个参数应该是相同的
调用测试
定义完测试后,可以使用RUN_ALL_TEST()运行测试,如果测试成功则返回0,否则返回1