我正在使用Google测试框架编写一些单元测试。但我想检查一些断言是否放置得很好并且有用。有没有办法在Google测试中捕获断言?
测试中的示例代码:
int factorial(int n){
assert(n >= 0);
//....
}
然后测试:
#include <gtest/gtest.h>
TEST(FactorialTest,assertNegative){
EXPECT_ANY_THROW({
factorial(-1);
});
}
但EXPECT_ANY_THROW
没有捕获断言,只能捕获异常。我正在寻找一种解决方案来捕获断言。
答案 0 :(得分:28)
Google测试提供ASSERT_DEATH
, EXPECT_DEATH
and other related macros。
这个问题和What are Google Test, Death Tests是彼此的答案。这会使它们重复吗? ; - )
答案 1 :(得分:0)
EXPECT_FATAL_FAILURE(语句,文本)和EXPECT_NONFATAL_FAILURE(语句,文本)将仅通过。
这些语句将通过您的测试:
EXPECT_NONFATAL_FAILURE( EXPECT_TRUE( 0 ), "" );
EXPECT_FATAL_FAILURE( ASSERT_TRUE( 0 ), "" );