如何创建Qt-Quick测试

时间:2015-10-19 08:45:38

标签: user-interface qml qtquick2 qttest

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

但首先,我要明确该怎么做。 有一个QtQuick2-App编写,现在我想用GUI进行单元测试。使用GUI进行单元测试的步骤是什么?阅读Qt文档后,我无法创建任何从测试开始的想法。

希望有人可以帮助我。

编辑:在我的项目中添加tst_button.qmltst_test.cpp之后,我能够运行一些测试(main.cpp现在在评论中)。这是正确的方法,还是应该为测试创建一个新项目?如果是,需要什么样的项目? 最后一个问题:例如,我是否需要按下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; MainForm{id:myForm}"
           var myMainForm = Qt.createQmlObject(createMyWindow,myRec)
            myRec.myMainForm = myMainForm
        }
      }
  }

tst_test.cpp

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

1 个答案:

答案 0 :(得分:6)

Testing and Debugging列出了两种方式:

  

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

  

我只是将* .qml文件添加到我的项目中并用我的代码填充它吗?如果是,我该怎么办才能开始测试?

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

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

  

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

例如,如果您的应用程序是纯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中拥有现有组件,则可以创建该组件并对其进行测试。