@Kuba が提供するソリューションは場合によっては機能しQTest::qExec(&test,argc,argv)
ますが、多くのテストを実行するためにメイン メソッドと組み合わせて使用すると機能しません。その場合、(私が見つけた) 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()
行を削除すると表示されます。