我在类方法中有这个简单的代码(使用std :: map< std :: string,std :: string>作为各种数据的容器):
try {
commonHeader->version = options.at("M3UA version").at(0);
} catch (const std::out_of_range& err) {
commonHeader->version = 1;
}
我正在使用QtTest运行一些测试,一个特定的插槽
Q_ASSERT(isupPage->ui->cicLineEdit == isupResultPage->ui->cicLineEdit);
最后。
当此测试处于活动状态时,所有异常都将无法捕获,从而导致代码损坏并且线程的std :: terminate()。但是,将Q_ASSERT更改为QVERIFY似乎可以解决问题。
这是Q_ASSERT的预期行为,还是应该更彻底地查看我的代码?
答案 0 :(得分:3)
Q_ASSERT
是一个通用的调试宏,可能会在某些条件下终止您的程序(另请参阅qFatal
)。 QVERIFY
是要在测试中使用的宏,因此这是您应该使用的宏。