【问题标题】:How to create integration test in QT?如何在 QT 中创建集成测试?
【发布时间】:2017-09-13 12:58:11
【问题描述】:

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

更新: 我熟悉 QTest 并使用它 - 我实际上是在寻找如何启动 custom 应用程序,而不是使用 QTEST_MAIN

【问题讨论】:

    标签: qt integration-testing qtestlib


    【解决方案1】:

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

    【讨论】:

    • 我误导了你一点,我已经在使用它了——我设法为自定义 QApplication 启动并使用 QTimer 执行事件,但感觉不对,因为没有这样的教程或文档用法 - 只有很多示例如何改进和使用单元测试 - 但没有 mocs,您只能使用宏 QTEST_MAIN 来启动应用程序 - 但您不能对您的应用程序执行此操作。如果您有任何自定义应用程序类测试示例的链接,我将不胜感激。
    • 我根本不使用 QTEST_MAIN。我在这个问题中使用了类似于测试套件方法的方法:stackoverflow.com/questions/2750005/…。 (傻瓜的回答)。我编写了一个小应用程序来处理参数(过滤不同的套件等)并将它们传递给 QTest::qExec。你只需要声明一个 QApplication 就可以了。
    • 只是为了清楚;您在迭代 testSuite 类的小型可执行文件的主函数中声明了一个通用 QApplication(但不是 exec()'d)。您的每组测试都是 testSuite 的子类,您可以按照正常的 QTest 示例在这些测试中编写 QTest 测试。要在这些测试函数中运行您的自定义应用程序,您只需要实例化您的应用程序。事件循环由 QTest::qExec 启动(我假设),它将您的 testSuite(一个 QObject)作为参数
    • 我使用 QApplication a(argc, argv); 成功启动了我的应用程序; a.exec();但是然后我如何测试鼠标点击等?我希望我的测试单击更改实例变量的特定按钮。然后我想测试一下这个变量是否被点击改变了。
    • QTest::mouseclick 让你点击一个小部件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    • 2016-03-15
    • 2015-03-08
    • 2021-01-03
    • 1970-01-01
    • 2019-03-26
    • 2022-07-06
    相关资源
    最近更新 更多