我必须创建一个Unit-Test。
但首先,我得弄清楚要做什么。有一个qtquick2应用程序编写,现在我想做单元测试与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)
测试和调试列出了两种方法:
Qt Test(也称为testlib)——c++代码的单元测试框架
- Qt快速测试- QML代码单元测试框架
您可以使用Qt Test来测试Qt Quick应用程序,但是当您需要访问QML中不可用的c++ API时,这通常更好。
我只是加了一个*。QML文件到我的项目和填充它与我的代码?如果是,我需要做什么才能开始测试?
你首先需要使测试一个单独的项目,除非你计划使用qmltestrunner
(我不知道为什么这个工具不是由Qt本身记录)。
Qt快速测试文档的运行测试部分详细介绍了如何启动和运行测试。
例如,如果您的应用程序是纯QML,并且只打算使用在添加tst_button之后,我能够运行一些测试。qml和tst_test.cpp到我的项目(main.cpp现在在评论中)。这是正确的方法吗,或者我应该为测试创建一个新项目吗?
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中有了一个现有的组件,您可以创建它的实例并对其进行测试。