(1)ASSERT_ANY_THROW/EXCEPT_ANY_THROW宏、 ASSERT_THROW/EXCEPT_THROW宏捕获异常 一般情况下,建议用...
voidThrowException(int n){switch(n){case0:throw0;case1:throw"const char*";case2:throw1.1f;case3:return;}}TEST(ThrowException,Check){EXPECT_THROW(ThrowException(0),int);EXPECT_THROW(ThrowException(1),constchar*);ASSERT_ANY_THROW(ThrowException(2));ASSERT_NO_THROW(ThrowException(3));} 这...
EXPECT_ANY_THROW(Foo(10,0)); EXPECT_THROW(Foo(0,5),char*); } 八、Predicate Assertions 在使用EXPECT_TRUE或ASSERT_TRUE时,有时希望能够输出更加详细的信息,比如检查一个函数的返回值TRUE还是FALSE时,希望能够输出传入的参数是什么,以便失败后好跟踪。因此提供了如下的断言: Google人说了,他们只提供<=5个...
EXPECT_EQ(std::string("a"), "a"); EXPECT_NE(std::string("a"), "b"); { const char* cstr_1 = "abc"; const char* cstr_2 = "abc"; // 虽然两者相等,但是只是指针地址相等 // a_cstr和b_cstr拥有相同的地址是因为编译器 // 将相同的字符串常量放到了同一个常量区。 EXPECT_EQ(cstr...
一、前言 这篇文章主要总结gtest中的所有断言相关的宏。 gtest中,断言的宏可以理解为分为两类,一类是ASSERT系列,一类是EXPECT系列。一个直观的解释就是: 1. ASSERT_* 系列的断言,当检查点失败时,退出当前函数(注意:并非退出当前案例)。 2. EXPECT_* 系列的断言
2.丰富的断言宏:Google Test 提供了多种断言宏,例如 EXPECT_EQ、ASSERT_TRUE、EXPECT_THROW 等,用于验证测试的预期结果。这些断言宏使测试代码更加清晰和可读。 3.参数化测试:Google Test 支持参数化测试,允许你在同一个测试用例中多次运行相同或不同的测试数据。这可以大大减少代码重复。
EXPECT_THROW(divide(6, 0), std::invalid_argument); ``` 3. SetUp和TearDown方法 在GTest中,每个测试用例的执行都可以有各自的SetUp和TearDown方法,用于初始化和清理测试环境。这些方法在每个测试用例的执行开始和结束时自动调用。 示例: ```cpp class MathTest : public ::testing::Test protected: virtual...
EXPECT_EQ(3, Add(1,2)) // 假如你的Add(1, 2) 结果为4的话,会在结果中输出: g:\myproject\c++\gtestdemo\gtestdemo\gtestdemo.cpp(16): error: Value of: Add(1,2) Actual:4 Expected:3 如果是将结果输出到xml里的话,将输出:(关于将结果输出为xml,见:http://www.cnblogs.com/coderzh/archiv...
SUCCEED()表示成功,但不代表整个测试成功FAIL()表示致命错误ADD_FAILURE()表示非致命错误ADD_FAILURE_AT()表示非致命错误,并输出文件名和行号6. 异常断言:ASSERT_THROW和EXPECT_THROW验证抛出特定异常ASSERT_ANY_THROW和EXPECT_ANY_THROW验证抛出任何异常ASSERT_NO_THROW和EXPECT_NO_THROW验证不抛出异常7....
ASSERT_THROW(Foo(5), bar_exception); EXPECT_NO_THROW({ int n = 5; Bar(&n); }); 为了更好地错误信息而使用谓词断言 尽管GTEST有一套丰富的断言,但是却永远不够,因为不可能预测用户可能遇到的所有场景。有些时候缺乏更好地宏,用户只能使用EXPECT_TRUE()来检查复杂的表达式。但是不能向用户展示表达式...