- GoogleTest 教程
- GoogleTest - 首页
- GoogleTest - 环境设置
- GoogleTest - 运行第一个测试
- GoogleTest - 命名法
- GoogleTest - 禁用测试
- GoogleTest - 断言
- GoogleTest - 死亡测试
- GoogleTest - 测试夹具
- GoogleTest - 事件监听器
- GoogleTest 有用资源
- GoogleTest - 有用资源
- GoogleTest - 讨论
GoogleTest - 断言
GoogleTest 中的断言是类似于函数调用的宏。它们用于以各种方式验证代码的行为。它可以检查布尔条件、比较值、验证字符串和浮点值。
这里,术语宏指的是预处理器指令。它定义了一段代码,您可以在整个测试中多次重用。
如果断言失败,将打印一条失败消息以及断言的源文件和失败的行号。还可以提供自定义失败消息,该消息将附加到失败消息中。
断言类型
GoogleTest 中有两种类型的断言,如下所示:
- EXPECT_*
- ASSERT_*
在这两种断言之间,首选 EXPECT_*,因为它允许报告多个失败。
EXPECT_* 断言
EXPECT_* 是一个非致命断言,这意味着即使它们失败,测试也会继续运行。换句话说,它会产生非致命性失败。由于此功能,您可以使用它来测试多个条件,而不会阻塞代码。
此外,您还可以使用<< 运算符提供要附加到断言的自定义失败消息。
常见的 EXPECT_* 断言
一些常用的 EXPECT_* 断言如下:
- EXPECT_TRUE(condition) − 测试条件是否为 TRUE。
- EXPECT_EQ(val1, val2) − 执行相等性测试。
- EXPECT_LT(val1, val2) − 测试 val1 是否小于 val2。
- EXPECT_GT(val1, val2) − 测试 val1 是否大于 val2。
- EXPECT_THROW(statement, exception_type) − 预期抛出特定异常。
- EXPECT_STREQ(str1, str2) − 测试两个给定字符串是否相等。
示例
以下示例演示了 EXPECT_* 断言的使用。
#include <gtest/gtest.h>
// to test basic assertions
TEST(Test1, ExpectAssertions) {
// expect two strings to be equal
EXPECT_STREQ("DDaaCC", "DDaaCC");
// expect equality
EXPECT_EQ(12, 2 * 6);
}
运行后,将显示以下输出:
Test project D:/gTest/test4/build
Start 1: Test1.ExpectAssertions
1/1 Test #1: Test1.ExpectAssertions ........... Passed 0.02 sec
100% tests passed, 0 tests failed out of 1
Total Test time (real) = 0.08 sec
ASSERT_* 断言
与EXPECT_* 不同,ASSERT_* 断言是致命的。如果发生失败,它将立即中止当前测试函数,这也会阻止该测试套件中任何进一步的代码执行。
如果继续进行测试没有意义或可能会导致误导性结果,则应使用 ASSERT_*。
常见的 ASSERT_* 断言
一些常用的 ASSERT_* 断言如下:
- ASSERT_TRUE(condition) − 验证条件是否为 TRUE。
- ASSERT_EQ(val1, val2) − 断言两个值相等。
- ASSERT_LT(val1, val2) − 检查第一个值是否小于第二个值。
- ASSERT_GT(val1, val2) − 测试第一个值是否大于第二个值。
- ASSERT_THROW(statement, exception_type) − 预期指定语句抛出特定异常。
示例
让我们看看 ASSERT_* 断言的实际示例。
#include <gtest/gtest.h>
// to test basic assertions
TEST(Test1, AssertAssertions) {
// assert that the condition is true
ASSERT_TRUE(strcmp("DDaaCC", "DDaaCC") == 0);
// assert first value is less than second
ASSERT_LT(2 * 6, 13);
}
运行此代码后,将产生以下结果:
Test project D:/gTest/test4/build
Start 1: Test1.AssertAssertions
1/1 Test #1: Test1.AssertAssertions ........... Passed 0.03 sec
100% tests passed, 0 tests failed out of 1
Total Test time (real) = 0.07 sec
广告