gtest中,断言的宏可以理解分为两类:一类是ASSERT系列,另一类是EXPECT系列。
ASSERT系列的断言----当检查点失败时,退出当前函数;
EXPECT系列的断言----当检查点失败时,继续往下执行。
样例:
//int型比较,预期值:3,实际值:Add(1, 2)
EXPECT_EQ(3, Add(1, 2)
如果Add(1, 2)的结果为5时,会在结果中输出:g:\myproject\c++\gtestdemo\gtestdemo\gtestdemo.cpp(16): error: Value of: Add(1, 2)
Actual: 4
Expected:3
| Fatal assertion | Nonfatal assertion | Verifies |
| ASSERT_TRUE(condition) | EXPECT_TRUE(condition) | condition is TRUE |
| ASSERT_FALSE( condition) | EXPECT_FALSE(condition) | condition is FALSE |
数值型数据检查:
| Fatal assertion | Nonfatal assertion | Verifies |
| ASSERT_EQ(expected, actual) | EXPECT_EQ(expected, actual) | 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 |
字符串检查:
| Fatal assertion | Nonfatal assertion | Verifies |
| ASSERT_STREQ(expected_str, actual_str) | EXPECT_STREQ(expected_str, actual_str) | the two C strings have the same content |
| ASSERT_STRNE(str1, str2) | EXPECT_STRNE(str1, str2) | the two C strings have different content |
| ASSERT_STRCASEEQ(expected_str, actual_str) | EXPECT_STRCASEEQ(expected_str, actual_str) | the two C strings have the same content, ignoring case |
| ASSERT_STRCASENE(str1, str2) | EXPECT_STRCASENE(str1, str2) | the two C strings have different content, ignoring case |
显示返回成功或失败
| Fatal assertion | Nonfatal assertion |
| FAIL() | ADD_FAILURE() |
异常检查:
| Fatal assertion | Nonfatal assertion | Verifies |
| ASSERT_THROW(statement, exception_type) | EXPECT_THROW(statement, exception_type) | statement throws an exception of the given type |
| ASSERT_ANY_THROW(statement) | EXPECT_ANY_THROW(statement) | statement throws an exception of any type |
| ASSERT_NO_THROW(statement) | EXPECT_NO_THROW(statement) | statement doesn't throw any exception |
检查浮点数:
| Fatal assertion | Nonfatal assertion | Verifies |
| ASSERT_FLOAT_EQ(expected, actual) | EXPECT_FLOAT_EQ(expected, actual) | the two float values are almost equal |
| ASSERT_DOUBLE_EQ(expected, actual) | EXPECT_DOUBLE_EQ(expected, actual) | the two double values are almost equal |
Windows HRESULT assertions
| Fatal assertion | Nonfatal assertion | Verifies |
| ASSERT_HRESULT_SUCCEEDED(expression) | EXPECT_HRESULT_SUCCEEDED(expression) | expression is a success HRESULT |
| ASSERT_HRESULT_FAILED(expression) | EXPECT_HRESULT_FAILED(expression) | expression is a failure HRESULT |
本文深入探讨了GTest中断言的宏分类,包括ASSERT系列和EXPECT系列,详细解释了每种断言的工作原理及用法,并通过实例展示了如何在测试中运用这些断言来验证函数行为。
5814

被折叠的 条评论
为什么被折叠?



