如何创建 Qt-Quick 测试

Posted

技术标签:

【中文标题】如何创建 Qt-Quick 测试【英文标题】:How to create a Qt-Quick Test 【发布时间】:2015-10-19 08:45:37 【问题描述】:

我必须创建一个单元测试。

但首先,我必须弄清楚该怎么做。 编写了一个 QtQuick2-App,现在我想用 GUI 进行单元测试。使用 GUI 进行单元测试的步骤是什么?阅读 Qt 文档后,我无法从测试开始产生任何想法。

希望有人可以帮助我。

编辑:在将tst_button.qmltst_test.cpp 添加到我的项目(main.cpp 现在在cmets 中)后,我能够运行一些测试。这是正确的方法,还是我应该为测试创建一个新项目?如果是,需要什么样的项目? 最后一个问题:例如,我是否需要建立我的MainForm 来按下按钮?

tst_button.qml

import QtQuick 2.4
import QtTest 1.0

Rectangle
    id: myRec
    property var myMainForm: null

    TestCase
        name:"ButtonClick"
        when:windowShown

        function test_init()
           var createMyWindow = "import QtQuick 2.0; MainFormid:myForm"
           var myMainForm = Qt.createQmlObject(createMyWindow,myRec)
            myRec.myMainForm = myMainForm
        
      
  

tst_test.cpp

#include <QtQuickTest/quicktest.h>
QUICK_TEST_MAIN(test)

【问题讨论】:

看看TestCase 我是否只是在我的项目中添加一个 *.qml 文件并用我的代码填充它?如果是,我需要做什么才能开始测试? 【参考方案1】:

Testing and Debugging 列出了两种方式:

Qt Test (also known as testlib) - C++ 代码单元测试框架 Qt Quick Test - QML 代码单元测试框架

您可以使用 Qt Test 来测试 Qt Quick 应用程序,但是当您需要访问 QML 中不可用的 C++ API 时,这通常会更好。

我是否只是在我的项目中添加一个 *.qml 文件并用我的代码填充它?如果是,我需要做什么才能开始测试?

您首先需要使测试成为一个单独的项目,除非您打算使用 qmltestrunner(我不知道为什么 Qt 本身没有记录该工具)。

Qt Quick Test 文档的Running Tests 部分详细介绍了如何启动和运行测试。


在将 tst_button.qml 和 tst_test.cpp 添加到我的项目后,我能够运行一些测试(main.cpp 现在在 cmets 中)。这是正确的方法,还是我应该为测试创建一个新项目?

例如,如果您的应用程序是纯 QML 并且只打算使用 qmlscene 运行,那么这样做就可以了。但是,如果您打算部署/发布您的应用程序,您可能需要一个可执行文件,这意味着为应用程序和测试创建单独的项目。

如果是,需要什么样的项目?

您可以拥有一个SUBDIRS 项目,这样您的测试和应用程序本身就可以在Qt Creator 中同时打开。像这样的:

myapp.pro
app/
    main.cpp
    app.pro
    resources.qrc
    main.qml
tests/
    tests.pro
    data/
        tst_stuff.qml

最后一个问题:例如,我是否需要建立我的 MainForm 来按下按钮?

没有。 .ui feature 只是一种格式,它允许 Qt Creator 强制执行某些约束,以便更轻松地使用 Qt Quick Designer 设计 Qt Quick UI。 MainForm.ui.qml 因此只是一种方便。如果您已经在 QML 中有一个现有组件,您可以创建它的实例并对其进行测试。

【讨论】:

感谢您的支持,您能看看我的编辑吗? tests.pro是什么项目?如何使用 Qt Creator 创建它? 啊,Qt Quick Test 项目在 Creator 4.6 下可用,在“Auto Test Project”下然后选择“Qt Quick Test”作为框架。

以上是关于如何创建 Qt-Quick 测试的主要内容,如果未能解决你的问题,请参考以下文章

新的拖放机制在 Qt-Quick (Qt 5.3) 中无法按预期工作

测试时如何避免再次创建相同的用户[关闭]

如何创建触发函数时通过的测试?

对于这些场景,如何使用 Jest 为无服务器测试创建测试?

如何创建 PayPal Payflow Pro 测试账户

如何创建 Spring Boot 测试套件