gpt4 book ai didi

c++ - 无法捕获 google 测试中的调试断言(死亡测试不满足)

转载 作者:行者123 更新时间:2023-11-28 04:23:38 24 4
gpt4 key购买 nike

我创建了一个 C++ 函数,如下所示

    int NeedTest(Pointer* b)
{
if(b == nullptr)
{
_ASSERTE(!"pointer is null.");
return 0;
}
else
{
//do something
return 1;
}

}

现在我想验证将空指针传递给此函数时,它会返回 0 并触发 _ASSERTE。但是,我多次尝试对此功能进行死亡测试,似乎调试断言对话框仍然显示并失败,因为此调试断言不是“死亡”,它仅在 Debug模式下显示调试断言对话框,当我点击“忽略”,该过程可以继续。对于这种情况,死亡测试是不合适的。

TEST(Mytest,test1)
{
EXPECT_DEATH(NeedTest(nullptr), "success");

}

Google 测试失败,因为它不是“死亡”并且显示调试断言对话框。谷歌测试中有没有我可以 EXPECT_DEBUG_ASSERTION_HAPPEN 而不是在谷歌测试中显示调试断言对话框的方法?我想在 Debug模式下测试我的代码是否包含 _ASSERTE。我还尝试了 EXPECT_DEATH_IF_SUPPORTEDEXPECT_DEBUG_DEATH,它们都不能按下对话框并告诉我测试已通过。

最佳答案

Googletest 的死亡测试无法抑制对话;测试程序会产生一个单独的进程来运行测试用例并分析它是如何存在的以及它写入 stderr 的内容。您可以使用标准 C++ assert 而不是 _ASSERTE;失败时它会按照 googletest 的要求执行。

关于c++ - 无法捕获 google 测试中的调试断言(死亡测试不满足),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54936693/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com