如何使用qtest测试信号槽连接

时间:2015-08-29 19:48:04

标签: c++ qt unit-testing qtestlib

我刚刚开始使用QT并希望进行单元测试。我找到了一个支持在我的应用程序之外进行测试的项目结构的蓝图。

对于我的第一次测试,我想点击“退出”菜单点,检查QMainWindow的关闭动作是否真正被调用。

来自Java及其所有模拟框架,这就是我想要做的事情:

  1. 模拟单击菜单(或按键)
  2. 点击退出操作(或按键)
  3. 确认发出QAction的“triggered()”信号
  4. 确认调用了QMainWindow的“close”插槽
  5. 我在网上阅读了qtest教程,KDE文档和其他内容,但我无法使用qtest(尚未)表达。

    我发现Qt UI testing: How to simulate a click on a QMenuBar item using QTest?描述了类似的事情,但即使只有1,2,3也被覆盖(我甚至无法让它们工作)。

    那我怎么写这样的测试用例呢?这甚至可能吗?

1 个答案:

答案 0 :(得分:2)

对于测试信号,可以使用QSignalSpy类http://doc.qt.io/qt-5/qsignalspy.html

但是你想测试整个应用程序 - 而不是一个单元。为此,像squish或ranorex(两者都是商业)的UI测试工具更适合。