(1)ASSERT_ANY_THROW/EXCEPT_ANY_THROW宏、 ASSERT_THROW/EXCEPT_THROW宏捕获异常 一般情况下,建议用...
在前面的玩转gtest - 断言中, 我们提到了ASSERT_*系列的断言只是在当前函数返回,并非退出当前测试案例,因为ASSERT_*系列是通过return来实现的(因此 ASSERT_*系列不能在返回值不为void的函数内出现)。要退出当前测试案例,一个最简单的方法就是通过抛异常,然后让gtest捕获这一异常。示例如下: 要退出当前测试案例,你只...
gtest是为在不同平台上为编写C++测试而生成的。它提供了丰富的断言、致命和非致命判断、参数化、”死亡测试”等等。 简而言之:Gtest测试框架可以在不同平台上为C/C++编写单元测试用例 GTest 断言 gtest 中断言的宏可以分为两类,一类是 ASSERT 宏,另一类就是 EXPECT宏了 1、ASSERT_系列:如果当前点检测失败则退出...
); }; ASSERT_THROW(throw_error_lamba(), std::runtime_error); ASSERT_ANY_THROW(throw_error_lamba()); // 可以直接使用代码块 ASSERT_NO_THROW({ int a = 1; }); } 浮点数断言 浮点数因为round-off error,两个浮点数完全一样的可能性比较低。所以gtest提供了一系列近似比较的断言。 上述系列...
gtest中断言的宏可以分为两类:一类是ASSERT宏,另一类就是EXPECT宏。 1、ASSERT_系列:如果当前点检测失败则退出当前函数 2、EXPECT_系列:如果当前点检测失败则继续往下执行 如果对自动输出的错误信息不满意的话,也是可以通过operator<<能够在失败的时候打印日志,将一些自定义的信息输出。
用来检测一段代码扔出异常。分为ASSERT和EXPECT两种 代码实例: 1ASSERT_THROW(Foo(5), bar_exception);23EXPECT_NO_THROW({4intn =5;5Bar(&n);6}); 针对更好的错误信息的谓语断言 即使Gtest里面断言非常的充足,但是还是不够的,因为我们没有办法预期使用者的所有可能进入的情形。由于缺少比较好的宏,有些时...
ASSERT_EQ()在比较指针时比较的是指针的值,当比较两个C风格的字符串时,将会比较他们是否有相同的内存地址,而不是有相同的值。因此在比较C风格字符串的时候应当使用ASSERT_STREQ(),但是在比较两个string对象的时候,应当使用ASSERT_EQ。 在进行指针的比较时应当使用*_EQ(ptr, nullptr)和*_NE(ptr, nullptr)代替*...
在前面的玩转gtest - 断言中, 我们提到了ASSERT_*系列的断言只是在当前函数返回,并非退出当前测试案例,因为ASSERT_*系列是通过return来实现的(因此 ASSERT_*系列不能在返回值不为void的函数内出现)。要退出当前测试案例,一个最简单的方法就是通过抛异常,然后让gtest捕获这一异常。示例如下: ...
ASSERT_THROW(expre,type) :断言表达式expre会抛出一个type类型的异常 ASSERT_ANY_THROW(expre):断言表达式expre会抛出一个任意类型的异常 ASSERT_NO_THROW(expre): 断言表达式expre不会抛出任何异常 【TESTFIXTURE】 在编写单元测试用例的过程中,我们会遇到这样的场景:一个测试套件由多个测试用例构成,每个测试用例在执...
| ASSERT_THROW(statement, exception_type); | EXPECT_THROW(statement, exception_type); | statement抛出给定类型的异常 | | ASSERT_ANY_THROW(statement); | EXPECT_ANY_THROW(statement); |statement抛出任何类型的异常 | | ASSERT_NO_THROW(statement); | EXPECT_NO_THROW(statement); | statement不抛出任...