(1)ASSERT_ANY_THROW/EXCEPT_ANY_THROW宏、 ASSERT_THROW/EXCEPT_THROW宏捕获异常 一般情况下,建议用...
EXPECT_THROW(Foo(0,5),char*); } 八、Predicate Assertions 在使用EXPECT_TRUE或ASSERT_TRUE时,有时希望能够输出更加详细的信息,比如检查一个函数的返回值TRUE还是FALSE时,希望能够输出传入的参数是什么,以便失败后好跟踪。因此提供了如下的断言: Google人说了,他们只提供<=5个参数的,如果需要测试更多的参数,直接...
EXPECT_ANY_THROW(Foo(10, 0)); EXPECT_THROW(Foo(0, 5), char*); } 八、Predicate Assertions 在使用EXPECT_TRUE或ASSERT_TRUE时,有时希望能够输出更加详细的信息,比如检查一个函数的返回值TRUE还是FALSE时,希望能够输出传入的参数是什么,以便失败后好跟踪。因此提供了如下的断言: Google人说了,他们只提供<=...
EXPECT_THROW(Foo(0,5),char*); } 八、Predicate Assertions 在使用EXPECT_TRUE或ASSERT_TRUE时,有时希望能够输出更加详细的信息,比如检查一个函数的返回值TRUE还是FALSE时,希望能够输出传入的参数是什么,以便失败后好跟踪。因此提供了如下的断言: Google人说了,他们只提供<=5个参数的,如果需要测试更多的参数,直接...
ASSERT_ANY_THROW EXPECT_ANY_THROW 期待抛出任何异常 1 ASSERT_NO_THROW EXPECT_NO_THROW 不希望抛出任何异常 1 ASSERT_EXIT EXPECT_EXIT 期望程序以指定错误码exit,且标准错误输出符合第三个参数的regex表达式 3 ASSERT_DEATH EXPECT_DEATH 期望程序错误退出(退出码非0),且标准错误输出符合第二个参数的regex表达式...
statement doesn't throw any exception 我们举一个例子 代码语言:javascript 复制 void ThrowException(int n) { switch (n) { case 0: throw 0; case 1: throw "const char*"; case 2: throw 1.1f; case 3: return; } } TEST(ThrowException, Check) { EXPECT_THROW(ThrowException(0), int); ...
ASSERT_NO_THROW(statement); EXPECT_NO_THROW(statement); statement doesn’t throw any exception Predicate Assertions 在使用EXPECT_TRUE或ASSERT_TRUE时,有时希望能够输出更加详细的信息,比如检查一个函数的返回值TRUE还是FALSE时,希望能够输出传入的参数是什么,以便失败后好跟踪。因此提供了如下的断言: ...
); }; ASSERT_THROW(throw_error_lamba(), std::runtime_error); ASSERT_ANY_THROW(throw_error_lamba()); // 可以直接使用代码块 ASSERT_NO_THROW({ int a = 1; }); } 浮点数断言 浮点数因为round-off error,两个浮点数完全一样的可能性比较低。所以gtest提供了一系列近似比较的断言。 上述系列...
EXPECT_EQ(2, Foo(4, 10)); // 可通过 ASSERT_* 和 EXPECT_* 断言来对程序运行结果进行检查 EXPECT_EQ(6, Foo(30, 18)); EXPECT_ANY_THROW(Foo(10, 0)) << "params: " << 10 << ", " << 0; EXPECT_THROW(Foo(0, 5), char*); ...
TEST(BaseCheck, Expect) { EXPECT_TRUE(1==1); EXPECT_TRUE(2==3); EXPECT_TRUE(3==3); } 上面两个测试特例中,第二个局部测试都是不成立的。由于EXPECT_*不会影响执行流程,所以即使第8行出错,之后的流程(第9行)也执行了。但是ASSERT_*会影响,所以第3行出错后,第4行没有执行。那么GTest是如何做到...