QQuickTest Namespace
QQuickTest 名前空間には、Qt Quick Test に関連するすべての関数とマクロが含まれています。詳細...
Header: | #include <QtQuickTest> |
関数
bool | qIsPolishScheduled(const QQuickItem *item) |
(since 6.4) bool | qIsPolishScheduled(const QQuickWindow *window) |
(since 6.4) bool | qWaitForPolish(const QQuickItem *item, int timeout = defaultTimeout) |
(since 6.4) bool | qWaitForPolish(const QQuickWindow *window, int timeout = defaultTimeout) |
マクロ
QUICK_TEST_MAIN(name) | |
QUICK_TEST_MAIN_WITH_SETUP(name, QuickTestSetupClass) |
詳細説明
Qt Quickユニットテストの書き方については、Qt Quick Test入門を参照してください。
Qt Quick Test C++ ライブラリにリンクするには、Qt Quick Test C++ API を参照してください。
QML テストの前に C++ を実行するも参照してください 。
関数ドキュメント
bool QQuickTest::qIsPolishScheduled(const QQuickItem *item)
最後にpolish() を呼び出してからitem でupdatePolish() が呼び出されていなければtrue
を返し、そうでなければfalse
を返します。
QMLでプロパティに値を代入する場合、代入の結果としてアイテムが行わなけれ ばならないレイアウトの変更は、すぐに反映されないことがあります。このような場合、この関数を使用することで、テストの実行が続行される前に項目が磨かれたことを確認することができます。例えば
QVERIFY(QQuickTest::qIsPolishScheduled(item)); QVERIFY(QQuickTest::qWaitForItemPolished(item));
上記のqIsPolishScheduled()
への呼び出しがなければ、qWaitForItemPolished()
への呼び出しは、磨きが予定されていないことがわかり、そのため項目はすでに磨かれていると仮定して即座にパスするかもしれません。この関数を使うことで、なぜアイテムが磨かれなかったのかが明らかになり、そのような状況下でテストが早期に失敗するようになります。
この関数に相当する QML 関数はisPolishScheduled() です。
QQuickItem::polish() およびQQuickItem::updatePolish()も参照して ください。
[since 6.4]
bool QQuickTest::qIsPolishScheduled(const QQuickWindow *window)
この関数は qIsPolishScheduled() をオーバーロードしたものです。
qIsPolishScheduled(item)
がtrue
を返すウィンドウで管理されている項目があればtrue
を返し、なければfalse
を返します。
例えば、シーン内のどこかのアイテムが磨かれているかもしれないし、磨かれていな いかもしれないが、磨かれていたらそれを待つ必要がある場合、次のコードを使うことが できます:
if (QQuickTest::qIsPolishScheduled(window)) QVERIFY(QQuickTest::qWaitForPolish(window));
この関数に相当するQML関数はisPolishScheduled ()です。
この関数はQt 6.4で導入されました。
QQuickItem::polish(),QQuickItem::updatePolish(),QQuickTest::qWaitForPolish()も参照して ください。
[since 6.4]
bool QQuickTest::qWaitForPolish(const QQuickItem *item, int timeout = defaultTimeout)
timeout ミリ秒、またはitem でupdatePolish() が呼ばれるまで待ちます。
updatePolish()
がitem でtimeout ミリ秒以内に呼び出された場合はtrue
を返し、そうでない場合はfalse
を返します。
この関数は Qt 6.4 で導入されました。
QQuickItem::polish()、QQuickItem::updatePolish()、QQuickTest::qIsPolishScheduled()も参照してください 。
[since 6.4]
bool QQuickTest::qWaitForPolish(const QQuickWindow *window, int timeout = defaultTimeout)
window で管理されているすべてのアイテムについて、timeout ミリ秒またはqIsPolishScheduled(item)
がfalse
を返すまで待ちます。
timeout ミリ秒以内にすべてのアイテムに対してqIsPolishScheduled(item)
が false を返した場合はtrue
を返し、そうでない場合はfalse
を返します。
この関数に相当する QML はwaitForPolish() です。
この関数は Qt 6.4 で導入されました。
QQuickItem::polish(),QQuickItem::updatePolish(),QQuickTest::qIsPolishScheduled()も参照してください 。
マクロ・ドキュメント
QUICK_TEST_MAIN(name)
Qt Quick Test アプリケーションのエントリーポイントを設定します。name 引数は、この一連のテストを一意に識別します。
#include <QtQuickTest>
QUICK_TEST_MAIN(example)
注意: このマクロは、QUICK_TEST_SOURCE_DIR
環境変数が設定されていない限り、テスト・ソースがカレント・ディレクトリにあることを前提とします。
QUICK_TEST_MAIN_WITH_SETUP() およびQt Quick Tests の実行も参照してください 。
QUICK_TEST_MAIN_WITH_SETUP(name, QuickTestSetupClass)
Qt Quick Test アプリケーションのエントリーポイントを設定します。引数name は、このテスト・セットを一意に識別します。
このマクロはQUICK_TEST_MAIN() と同じですが、追加の引数QuickTestSetupClass を取り、インスタンス化されるQObject 派生クラスの型を指定します。このクラスを使用することで、QML テストを実行する前に実行する追加設定コードを定義することができます。
注意: このマクロは、QUICK_TEST_SOURCE_DIR
環境変数が設定されていない限り、テストソースがカレントディ レクトリにあることを前提としています。
以下のスニペットは、このマクロの使用例を示しています:
// src_qmltest_qquicktest.cpp #include <QtQuickTest> #include <QQmlEngine> #include <QQmlContext> #include <QGuiApplication> class Setup : public QObject { Q_OBJECT public: Setup() {} public slots: void applicationAvailable() { // Initialization that only requires the QGuiApplication object to be available } void qmlEngineAvailable(QQmlEngine *engine) { // Initialization requiring the QQmlEngine to be constructed engine->rootContext()->setContextProperty("myContextProperty", QVariant(true)); } void cleanupTestCase() { // Implement custom resource cleanup } }; QUICK_TEST_MAIN_WITH_SETUP(mytest, Setup) #include "src_qmltest_qquicktest.moc"
QUICK_TEST_MAIN() とRunning Qt Quick Testsも参照して ください。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。