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

Kil*_*zor 36 c++ unit-testing googletest assertions

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

测试中的示例代码:

int factorial(int n){
    assert(n >= 0);
    //....
}
Run Code Online (Sandbox Code Playgroud)

然后测试:

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

但是EXPECT_ANY_THROW没有抓住断言但只有例外.我正在寻找一个捕获断言的解决方案.

Ste*_*sop 29

谷歌测试提供ASSERT_DEATH,EXPECT_DEATH以及其他相关的宏.

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

  • @Killrazor:如果你认为这是一个骗局,那么关闭一个问题,你会得到5个人,每个人都有足够的代表获得这个许可,投票关闭它.但我不担心 - 这个问题会在"最近","主动"和"热门"问题清单中迅速消失,如果还没有,那么这不是任何人的问题.它使用不同的术语可能很有用,因此会显示在不同的Google搜索中. (2认同)
  • 重复的答案不一定构成重复的问题。但是,您的答案本质上只是一个链接——这是不鼓励的。 (2认同)
  • 我已经提到了最相关的宏的名称,因此如果链接断开,那么读者可以找到最新文档. (2认同)
  • 移至此处:https://google.github.io/googletest/advanced.html#death-tests (2认同)