无法捕获 google 测试中的调试断言(死亡测试不满足)
Cannot capture the debug assertion in google test(death test doesn't satisfy it)
我创建了一个如下所示的 C++ 函数
int NeedTest(Pointer* b)
{
if(b == nullptr)
{
_ASSERTE(!"pointer is null.");
return 0;
}
else
{
//do something
return 1;
}
}
现在我想验证一下,当将一个空指针传递给这个函数时,它会 return 0 并且 _ASSERTE
被触发。
但是,我多次尝试对此功能进行死亡测试,似乎调试断言对话框仍然显示并失败,因为此调试断言不是 "death",它仅在调试模式下显示调试断言对话框,当我点击 "ignore",进程可以继续。对于这种情况,死亡测试是不合适的。
TEST(Mytest,test1)
{
EXPECT_DEATH(NeedTest(nullptr), "success");
}
Google 测试失败,因为它不是 "die" 并且出现调试断言对话框。
google 测试中是否有我可以 EXPECT_DEBUG_ASSERTION_HAPPEN
而不会在 google 测试中显示调试断言对话框的方法?
我想在调试模式下测试我的代码是否包含 _ASSERTE
。
我也试了EXPECT_DEATH_IF_SUPPORTED
和EXPECT_DEBUG_DEATH
,其中none可以按下对话框告诉我测试通过了。
Googletest 的死亡测试无法抑制对话;测试程序将为 运行 测试用例生成一个单独的进程,并分析它是如何存在的以及它写入 stderr 的内容。您可以使用标准 C++ assert
而不是 _ASSERTE
;失败时它会执行 googletest 想要它执行的操作。
我创建了一个如下所示的 C++ 函数
int NeedTest(Pointer* b)
{
if(b == nullptr)
{
_ASSERTE(!"pointer is null.");
return 0;
}
else
{
//do something
return 1;
}
}
现在我想验证一下,当将一个空指针传递给这个函数时,它会 return 0 并且 _ASSERTE
被触发。
但是,我多次尝试对此功能进行死亡测试,似乎调试断言对话框仍然显示并失败,因为此调试断言不是 "death",它仅在调试模式下显示调试断言对话框,当我点击 "ignore",进程可以继续。对于这种情况,死亡测试是不合适的。
TEST(Mytest,test1)
{
EXPECT_DEATH(NeedTest(nullptr), "success");
}
Google 测试失败,因为它不是 "die" 并且出现调试断言对话框。
google 测试中是否有我可以 EXPECT_DEBUG_ASSERTION_HAPPEN
而不会在 google 测试中显示调试断言对话框的方法?
我想在调试模式下测试我的代码是否包含 _ASSERTE
。
我也试了EXPECT_DEATH_IF_SUPPORTED
和EXPECT_DEBUG_DEATH
,其中none可以按下对话框告诉我测试通过了。
Googletest 的死亡测试无法抑制对话;测试程序将为 运行 测试用例生成一个单独的进程,并分析它是如何存在的以及它写入 stderr 的内容。您可以使用标准 C++ assert
而不是 _ASSERTE
;失败时它会执行 googletest 想要它执行的操作。