无法捕获 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_SUPPORTEDEXPECT_DEBUG_DEATH,其中none可以按下对话框告诉我测试通过了。

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