gpt4 book ai didi

c++ - Googletest - DeathTest 不捕获来自 Qt 应用程序的断言,例如 Q_ASSERT 等。

转载 作者:行者123 更新时间:2023-11-30 03:02:11 25 4
gpt4 key购买 nike

我想用 gtest 测试断言。该方法如下所示:

void aMethod()
{
Q_ASSERT( 1 == geode.getNumDrawables());

DoSomeOtherStuff
}

测试看起来像这样:

TEST_F(aTestClassDeathTest, aTestName)
{
::testing::FLAGS_gtest_death test_style = "threadsafe";
ASSERT_DEATH({ aMethod;}, "1 == geode.getNumDrawables");
}

这个测试在 linux 下用 gcc 工作得很好。

但是这个在windows下visual studio 2010测试有问题。

当我运行测试时,会打开一个错误窗口。它显示断言失败。当我关闭窗口时,所有测试都完成了。没有测试失败。

我认为 gtests 启动了一个导致断言失败的新进程并评估进程输出。这有效并且测试通过。

但是当 visual studio 注意到新进程失败时,它会创建错误窗口。

如何抑制错误窗口?

最佳答案

弹出窗口是由于Qt,而不是gtest。 Q_ASSERT 宏正在调用 CRT 调试窗口。

您可以将Q_ASSERT 替换为assert 或者您可以使用QtMsgHandler抑制弹出窗口。

关于c++ - Googletest - DeathTest 不捕获来自 Qt 应用程序的断言,例如 Q_ASSERT 等。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10317589/

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