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

3
我刚开始使用QT并且想要有单元测试。我找到了一个支持在应用程序外进行测试的项目结构蓝图。
我的第一个测试是想要点击“退出”菜单项,并检查QMainWindow的close动作是否被调用。
从Java中所有的mocking框架中来看,这是我想做的事情:
1. 模拟点击菜单(或按键) 2. 点击退出动作(或按键) 3. 验证QAction的“triggered()”信号是否发出 4. 验证QMainWindow的“close”插槽是否被调用
我阅读了qtest教程、KDE文档和其他网络上的资料,但我还不能使用qtest表达它(尚未)。
我在Qt UI testing: How to simulate a click on a QMenuBar item using QTest?中找到了类似的描述,但即使在那里只涵盖了1、2、3 (而且我甚至无法让它们正常工作)。
那么我该如何编写这样的测试用例?是否可能呢?
1个回答

4

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

但是如果你想测试整个应用程序而不是单个单元,则 UI 测试工具(如 squish 或 ranorex,两者都是商业软件)更加适合。


我确实了解到了QSignalSpy,但那只是signal-slot的一半。:) 我还尝试用测试版本的close覆盖我的MainWindow,但由于该方法未定义为虚拟方法,因此也无法起作用。 - Christian Kalkhoff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接