如何创建 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.qml
和tst_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 测试的主要内容,如果未能解决你的问题,请参考以下文章