如何使用Google测试捕捉断言?

问题描述 投票:36回答:2

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

示例代码在测试中:

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

然后是测试:

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

但是EXPECT_ANY_THROW不能捕获断言,而只能捕获异常。我正在寻找捕获断言的解决方案。

c++ unit-testing googletest assertions
2个回答
29
投票

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

这个问题和ASSERT_DEATH是彼此的答案。这会使它们重复吗? ;-)


0
投票
如果[statement]分别调用

failing ASSERT_x或EXECT_x,则[[EXPECT_FATAL_FAILURE(语句,文本)和EXPECT_NONFATAL_FAILURE(语句,文本)将仅通过这些语句将通过您的测试:

EXPECT_DEATH

© www.soinside.com 2019 - 2024. All rights reserved.