@Kuba 给出的解决方案在某些情况下有效,但在与QTest::qExec(&test,argc,argv)
main 方法结合使用以运行多个测试时无效。在这种情况下,禁用 qDebug() 输出(我发现)的唯一方法是为其void initTestCase()
插槽中的每个测试类注册一个新的消息处理程序。
例如
void noMessageOutput(QtMsgType, const char *)
{}
int main(int argc,char* argv[])
{
qInstallMsgHandler(noMessageOutput);
tst_Class1 t1;
tst_Class2 t2;
QTest::qExec(&t1,argc,argv);
QTest::qExec(&t2,argc,argv);
}
将显示调试输出 tst_Class1、Class1、tst_Class2 和 Class2。为了防止这种情况,您必须明确禁用每个测试类中的输出
class tst_Class1
{
//class stuff
private slots:
void initTestCase();
//test cases
};
void tst_Class1::initTestCase()
{
qInstallMsgHandler(noMessageOutput);
}
class tst_Class2
{
//class stuff
private slots:
void initTestCase();
//test cases
};
void tst_Class2::initTestCase()
{
qInstallMsgHandler(noMessageOutput);
}
如果您希望查看来自类子集的调试输出,请删除该qInstallMsgHandler()
行,它将通过。