7

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

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

希望有人能帮助我。

编辑tst_button.qml:添加到我的项目后,我能够运行一些测试tst_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)
4

1 回答 1

6

测试和调试列出了两种方法:

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

我是否只需将 *.qml 文件添加到我的项目并用我的代码填充它?如果是,我必须做什么才能开始测试?

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

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


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

于 2015-10-19T16:24:46.287 回答