我必须创建一个单元测试。
但首先,我要明确该怎么做。 有一个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)
答案 0 :(得分:6)
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现在在注释中)。这是正确的方法,还是应该为测试创建一个新项目?
例如,如果您的应用程序是纯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中拥有现有组件,则可以创建该组件并对其进行测试。