Google Test对于结果的判断,有两种形式:
- ASSERT_*:这类判断是Fatal的。一旦这个判断出错,则直接从测试函数中返回,不会再继续后面的测试。
- EXPECT_*:这类判断是Nonfatal的。它的效果是,如果某个判断出错,则输出一个错误信息,但是接下来仍然会继续执行后面的测试。
可以进行的判断方法主要有下面这些:
布尔判断
Fatal | Nonfatal | 说明 |
---|---|---|
ASSERT_TRUE(condition) | EXPECT_TRUE(condition) | 判断 condition 为 true |
ASSERT_FALSE(condition) | EXPECT_FALSE(condition) | 判断 condition 为 false |
二进制判断
Fatal | Nonfatal | 说明 |
---|---|---|
ASSERT_EQ(expected, actual) | EXPECT_EQ(expected, actual) | 判断两个数值相等 |
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 |
说明:
- EQ:EQual
- NE:Not Equal
- LT:Less Than
- LE:Less Equal
- GT:Greater Than
- GE:Greater Equal
字符串判断
Fatal | Nonfatal | 说明 |
---|---|---|
ASSERT_STREQ(expected, actual) | EXPECT_STREQ(expected, actual) | 两个C string相同 |
ASSERT_STRNE(str1, str2) | EXPECT_STRNE(str1, str2) | 两个C string不相同 |
ASSERT_STRCASEEQ(exp, act) | EXPECT_STRCASEEQ(exp, act) | 忽略大小写,两个C string相同 |
ASSERT_STRCASENE(str1, str2) | EXPECT_STRCASENE(str1, str2) | 忽略大小写,两个C string不相同 |
浮点数判断
Fatal | Nonfatal | 说明 |
---|---|---|
ASSERT_FLOAT_EQ(exp, act) | EXPECT_FLOAT_EQ(exp, act) | 两个float数值相等 |
ASSERT_DOUBLE_EQ(exp, act) | EXPECT_DOUBLE_EQ(exp, act) | 两个double数值相等 |
ASSERT_NEAR(val1, val2, abs_err) | EXPECT_NEAR(val1, val2, abs_err) | val1和val2的差距不超过abs_err |
异常判断
Fatal | Nonfatal | 说明 |
---|---|---|
ASSERT_THROW(stmt, exc_type) | EXPECT_THROW(stmt, exc_type) | stmt抛出了exc_type类型的异常 |
ASSERT_ANY_THROW(stmt) | EXPECT_ANY_THROW(stmt) | stmt抛出了任意类型的异常 |
ASSERT_NO_THROW(stmt) | EXPECT_NO_THROW(stmt) | stmt没有抛出异常 |