无法在google测试中捕获调试断言(死亡测试不满足它) < >我创建了一个C++函数,如下面的 int NeedTest(Pointer* b) { if(b == nullptr) { _ASSERTE(!"pointer is null."); return 0; } else { //do something return 1; } }

无法在google测试中捕获调试断言(死亡测试不满足它) < >我创建了一个C++函数,如下面的 int NeedTest(Pointer* b) { if(b == nullptr) { _ASSERTE(!"pointer is null."); return 0; } else { //do something return 1; } },c++,unit-testing,googletest,C++,Unit Testing,Googletest,现在我想验证一下,当向这个函数传递一个空指针时,它将返回0,并触发_asserte。 但是,我多次尝试使用此函数的death test,似乎调试断言对话框仍然显示并失败,因为此调试断言不是death,它仅在调试模式下显示调试断言对话框,当我点击ignore时,进程可以继续。对于这种情况,死亡测试是不合适的 TEST(Mytest,test1) { EXPECT_DEATH(NeedTest(nullptr), "success"); } 谷歌测试失败,因为它没有死亡,调试断言对话框出现

现在我想验证一下,当向这个函数传递一个空指针时,它将返回0,并触发_asserte。 但是,我多次尝试使用此函数的death test,似乎调试断言对话框仍然显示并失败,因为此调试断言不是death,它仅在调试模式下显示调试断言对话框,当我点击ignore时,进程可以继续。对于这种情况,死亡测试是不合适的

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

}
谷歌测试失败,因为它没有死亡,调试断言对话框出现。 在谷歌测试中,我是否可以期望出现调试断言而不在谷歌测试中显示调试断言对话框? 我想测试我的代码在调试模式下是否包含_ASSERTE。
我还尝试了EXPECT\u DEATH\u如果受支持,EXPECT\u DEBUG\u DEATH,没有人可以按下对话框并告诉我测试通过。

谷歌测试的死亡测试无法抑制对话框;测试程序将生成一个单独的进程来运行测试用例,并分析它是如何存在的以及它向stderr写入了什么。您可以使用标准C++断言代替AySaleType;失败时,它会执行Google Test希望它执行的操作。

这是个人偏好,但我建议不要使用断言,原因正是:与异常或错误代码不同的断言失败没有语言内的方式来捕获它们,它们与各种客户端代码的交互都很糟糕。