0

我有一个 QT 应用程序,我想用 QTest 对其进行测试。关于我想做的事情:我有一个主窗口,按钮设置所在的位置。如果我单击此按钮,则会出现 QDialog。我想测试这是否真的发生

MainWindow mwindow;
QTest::mouseClick(mwindow->showButton, QtCore::Qt::LeftButton)

然后我会检查新对话框中是否存在文本等。

对话框出现但是 - 如何在测试中关闭它而不手动关闭它?以及如何测试其中是否存在文本。如果我做对了,在显示对话框时我将无法在测试中做任何事情。

我究竟做错了什么?

4

1 回答 1

1

您可以使用QTimerQTest ::keyClick()

如果您QMessgeBox的 ' 指针是msgBox,在QTimer'timeout()插槽中,

QTest::keyClick( msgBox, Qt::Key_Enter);

此外,您可以使用QCOMPARE 宏测试文本。

QCOMPARE( sourceText, targetText );

附加

我认为QTimer::singleShot对解决您的问题很有用。

QMessageBox test;
QDialog& dlg = test;
QTimer::singleShot( 2000, &dlg, SLOT( close() ) );
dlg.exec();

在上面的代码中,测试消息框将在 2 秒后关闭。所以,你的代码也许..

MainWindow mwindow;
QDialog& dlg = mwindow;
QTimer::singleShot( 2000, &dlg, SLOT( close() ) ); //or SLOT( quit() )?
QTest::mouseClick(mwindow->showButton, QtCore::Qt::LeftButton)

但是,我没有测试过。另外,请尝试阅读这篇文章。我希望这可以帮助你。

于 2016-03-14T23:42:45.450 回答