我正在调查QTest以进行GUI 测试。QTest 中似乎没有异步测试信号回调的机制。我是否误解了如何使用 QTest,或者误解了 QTest 提供的预期功能?
例如,我正在尝试测试一个信号,该信号会启动一个模态QMessageBox弹出窗口以响应单击QPushButton。我想测试单击按钮和单击 QMessageBox 上的“确定”之间的事件和状态。我已经尝试使用QSignalSpy.wait()
, QTestEventList.simulate()
, QTest::mouseClick()
,QTest::mouseEvent()
和QTRY_VERIFY()
,所有这些在从测试代码中调用时,直到单击 QMessageBox 弹出窗口上的“确定”后才返回。因此,要在所有事件处理程序返回之前测试任何内容,我必须在被测对象上安装一个事件过滤器,并编写我自己的异步测试代码。
如果我们不使用测试库,这与我们必须编写的所有代码相同,并且我们可以在不使用 QTest 的情况下完成所有这些工作。例如,我们可以手动获取被测对象的句柄,连接信号进行测试,调用事件触发事件处理程序或手动调用信号,也可以在返回执行之前编写与测试环境交互的已安装测试处理程序到事件启动的时间点。QTest 在这里为我们带来了什么?
(也发布在Qt 论坛上)