2017-04-17 97 views
0

如何在QT中创建/启动集成测试?例如,我想用QSignalSpy测试我的应用程序接收事件和检查信号,但看起来没有选项可以在此之后执行应用程序和测试。如何在QT中创建集成测试?

更新: 我熟悉QTest和使用它 - 实际上,我在寻找如何启动定制应用程序,而不是基地之一与QTEST_MAIN宏观

回答

0

看看QTest。它专为单元测试而设计,但您可以使用它来启动您的应用程序,在对象上执行鼠标单击和按键。当你获得一个模态窗口时,它确实会带来一些头痛,但是在SO上有解决方法。

+0

我误导了你一点,我已经在使用它 - 我设法启动自定义QApplication并使用QTimer执行事件,但它感觉不对,因为没有关于这种用法的教程或文档 - 只有很多示例如何改进和使用单元测试 - 但没有mocs,并且您只能使用宏QTEST_MAIN来启动应用程序 - 但您不能对应用程序执行此操作。如果你有任何与自定义应用程序类测试相关的链接,我会非常感激。 – htzfun

+0

我根本不使用QTEST_MAIN。我在这个问题中使用了类似于测试套件方法的方法:https://stackoverflow.com/questions/2750005/testing-with-qts-qtestlib-module/2760185#2760185。 (来自愚人的答案)。我写了一个小应用程序来处理参数(以过滤不同的套件等),并将它们传递到QTest :: qExec。你只需要申请一个QApplication,并且它工作得很好。 – mike

+0

只是要清楚;你在通过testSuite类迭代的小型可执行文件的主函数中声明了一个通用的QApplication(但不包含exec()'d)。你的每一组测试都是testSuite的一个子类,你可以根据正常的QTest例子编写Q​​Test测试。要在这些测试函数中运行自定义应用程序,您只需要实例化您的应用程序。通过QTest :: qExec开始事件循环(我假设),它将您的testSuite(一个QObject)作为参数 – mike