QT:单元测试分段故障

时间:2010-11-22 10:46:41

标签: unit-testing qt user-interface segmentation-fault qtestlib

以下是用于模拟菜单上按键的代码块。我可以深入浏览我的应用程序的菜单,但当我回到主窗体时,我得到了一个分段错误.... :(

首先我展示我的应用程序:

std::auto_ptr<MyForm> mainForm( new MyForm( 3, 3 ));
mainForm->show();

然后模拟一个keyPress以显示主菜单:

QTest::keyPress(mainForm.get(), Qt::Key_0, NULL, 300);
QTest::keyRelease(mainForm.get(), Qt::Key_0, NULL, 300);
QWidget *pWin = QApplication::activeWindow();
QCOMPARE(QString(pWin->objectName()), QString("MainMenu"));

然后模拟另一个keyPress返回我的主应用程序:

QTest::keyPress(pWin, Qt::Key_Escape, NULL, 300);
QTest::keyRelease(pWin, Qt::Key_Escape, NULL, 300);
pWin = QApplication::activeWindow();
QCOMPARE(QString(pWin->objectName()), QString("MainForm"));

这是我遇到分段错误的地方......有人能告诉我导致这个错误的原因是什么吗?

1 个答案:

答案 0 :(得分:1)

首先检查QApplication::activeWindow()的结果。来自文档..

  

返回应用程序顶级   具有键盘输入的窗口   焦点,如果没有应用程序窗口则为0   有重点。可能有一个   activeWindow()即使没有   focusWidget(),例如,如果没有   该窗口中的小部件接受密钥   事件