45

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

正在测试的示例代码:

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

然后是测试:

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

EXPECT_ANY_THROW没有捕捉到断言,而只有例外。我正在寻找捕获断言的解决方案。

4

2 回答 2

40

谷歌测试提供ASSERT_DEATHEXPECT_DEATH和其他相关的宏

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

于 2010-09-21T00:06:57.320 回答
1

EXPECT_FATAL_FAILURE(statement,text) 和 EXPECT_NONFATAL_FAILURE(statement,text)只有在 'statement' 分别调用失败的ASSERT_x 或 EXECT_x时才会通过。

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

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

于 2019-11-18T17:48:26.230 回答