2015-10-19 29 views
5

ユニットテストを作成する必要があります。Qt-Quickテストの作成方法

しかし、まず、何をすべきかを明確にします。 QtQuick2-Appが書かれていますが、今はGUIでユニットテストをしたいと思います。 GUIを使った単体テストの手順は何ですか? Qt文書を読んだ後、私はテストを始めるためのアイデアを作り出すことができませんでした。

誰かが私を助けることを望みます。

編集:私は(main.cppには今コメントである)私のプロジェクトにtst_button.qmltst_test.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

[TestCase](http://doc.qt.io/qt-5/qml-qttest-testcase.html#details)をご覧ください。 – folibis

+0

* .qmlファイルをプロジェクトに追加してそれは私のコードですか?はいの場合は、テストを開始するために何をしなければなりませんか? – RefMa77

答えて

5

Testing and Debuggingリスト二つの方法:

  • Qt Test (also known as testlib) - Cのユニットテストのためのフレームワーク++コード
  • Qt Quick Test - あなたはQtのクイックアプリケーションをテストするためのQtのテストを使用することができます

QMLコードのユニットテストのためのフレームワークが、それはあなたがQMLでは使用できないC++ APIへのアクセスを必要とするときのために、一般的に良いでしょう。

私のプロジェクトに* .qmlファイルを追加してコードに記入するだけですか?はいの場合は、テストを開始するために何をしなければなりませんか?

qmltestrunnerを使用する予定がない限り、最初にテストを別のプロジェクトにする必要があります(そのツールがQt自体によって文書化されていない理由はわかりません)。

QtクイックテストのドキュメントのRunning Testsセクションでは、テストの実行方法を詳しく説明しています。


私は(main.cppには今コメントである)私のプロジェクトにtst_button.qmlとtst_test.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クイックデザイナでのQtクイックUIを設計するために作るために一定の制約を強制することを可能にする形式です。したがって、MainForm.ui.qmlは単なる便宜です。既にQMLに既存のコンポーネントがある場合は、そのインスタンスを作成してテストすることができます。

+0

ご支援いただき、ありがとうございました。編集内容をご覧いただけますか? – RefMa77

関連する問題