如何通过Google测试获取断言?

时间:2010-09-21 00:02:20

标签: c++ unit-testing googletest assertions

我正在使用Google测试框架编写一些单元测试。但我想检查一些断言是否放置得很好并且有用。有没有办法在Google测试中捕获断言?

测试中的示例代码:

int factorial(int n){
    assert(n >= 0);
    //....
}

然后测试:

#include <gtest/gtest.h>
TEST(FactorialTest,assertNegative){
    EXPECT_ANY_THROW({
         factorial(-1);
    });
}

EXPECT_ANY_THROW没有捕获断言,只能捕获异常。我正在寻找一种解决方案来捕获断言。

2 个答案:

答案 0 :(得分:28)

Google测试提供ASSERT_DEATH, EXPECT_DEATH and other related macros

这个问题和What are Google Test, Death Tests是彼此的答案。这会使它们重复吗? ; - )

答案 1 :(得分:0)

如果分别调用失败 ASSERT_x或EXECT_x,则

EXPECT_FATAL_FAILURE(语句,文本)和EXPECT_NONFATAL_FAILURE(语句,文本)将仅通过

这些语句将通过您的测试:

EXPECT_NONFATAL_FAILURE( EXPECT_TRUE( 0 ), "" ); EXPECT_FATAL_FAILURE( ASSERT_TRUE( 0 ), "" );