QAbstractItemModelTester Class
QAbstractItemModelTester クラスは、QAbstractItemModel のサブクラスのテストに役立ちます。詳細...
| ヘッダー: | #include <QAbstractItemModelTester> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Test) target_link_libraries(mytarget PRIVATE Qt6::Test) |
| qmake: | QT += testlib |
| 継承元: | QObject |
パブリック型
| enum class | FailureReportingMode { QtTest, Warning, Fatal } |
パブリック関数
| QAbstractItemModelTester(QAbstractItemModel *model, QObject *parent = nullptr) | |
| QAbstractItemModelTester(QAbstractItemModel *model, QAbstractItemModelTester::FailureReportingMode mode, QObject *parent = nullptr) | |
| QAbstractItemModelTester::FailureReportingMode | failureReportingMode() const |
| QAbstractItemModel * | model() const |
(since 6.4) void | setUseFetchMore(bool value) |
詳細な説明
QAbstractItemModelTester クラスは、アイテムモデルをテストするためのユーティリティクラスです。
アイテムモデル(つまり、QAbstractItemModel の具体的なサブクラス)を実装する際には、モデルのユーザー(ビュー、プロキシモデルなど)にとっての一貫性を確保するために、非常に厳格な一連のルールに従わなければなりません。
たとえば、特定のインデックスに対して、モデルによる `hasChildren()` の再実装は、`rowCount()` および `columnCount()` が返す値と一貫性がなければなりません。
QAbstractItemModelTesterは、カスタムアイテムモデルクラスにおける最も一般的なエラーの検出を支援します。一連のテストを実行することで、モデルの状態が常に一貫していることを確認しようとします。これらのテストは、モデルが変更されるたびに自動的に繰り返されます。
QAbstractItemModelTester は非破壊的なテストを採用しており、通常は指定されたアイテムモデルからデータやメタデータを読み取ることで構成されます。また、QAbstractItemModelTester はモデルに対する不正な変更も試みます。適切に実装されたモデルでは、そのような試みは拒否され、その結果としてデータが変更されることはありません。
使用方法
QAbstractItemModelTester の使用方法は簡単です。テストケースでは、テスト対象のモデルをコンストラクタに渡してインスタンスを作成するだけで十分です。
MyModel *modelToBeTested = ...;
auto tester = new QAbstractItemModelTester(modelToBeTested);QAbstractItemModelTesterは、Qt Test のロギングメカニズムを通じてテストの失敗を報告します。
また、QAbstractItemModelTesterをテストケースの外で利用することも可能です。例えば、アプリケーションで使用されるアイテムモデルを、そのモデル専用のユニットテストを明示的に作成することなく(これは困難な場合があるため)テストするのに役立つ場合があります。 テストケースの外で QAbstractItemModelTester を使用するには、QAbstractItemModelTester::FailureReportingMode の列挙型のいずれかをそのコンストラクタに渡して、失敗のログ記録方法を指定します。
QAbstractItemModelTesterは、qt.modeltest のロギングカテゴリの下で、追加のデバッグ情報をログメッセージとして報告することもあります。このようなデバッグロギングはデフォルトでは無効になっています。有効にする方法については、QLoggingCategory のドキュメントを参照してください。
注: QAbstractItemModelTesterは、 カスタムアイテムモデルの開発やテストにおいて有用な支援ツールですが、 QAbstractItemModel のサブクラスで発生しうるすべての問題を検出する(また、検出できる)わけではありません。特に、モデルに対する有意義な破壊的テストは決して行わないため、モデルについては別途テストを行う必要があります。
「モデル/ビュープログラミング」および「QAbstractItemModel 」も参照してください 。
メンバ型のドキュメント
enum class QAbstractItemModelTester::FailureReportingMode
この列挙型は、QAbstractItemModelTester がQAbstractItemModel のサブクラスをテストする際に、失敗をどのように報告すべきかを指定します。
| 定数 | 値 | 説明 |
|---|---|---|
QAbstractItemModelTester::FailureReportingMode::QtTest | 0 | 失敗は、QtTest のテスト失敗として報告されます。 |
QAbstractItemModelTester::FailureReportingMode::Warning | 1 | 失敗は、qt.modeltest ロギングカテゴリの警告メッセージとして報告されます。 |
QAbstractItemModelTester::FailureReportingMode::Fatal | 2 | 失敗が発生すると、プログラムは直ちに異常終了します。失敗の理由は、qFatal() を使用して報告されます。 |
メンバ関数のドキュメント
QAbstractItemModelTester::QAbstractItemModelTester(QAbstractItemModel *model, QObject *parent = nullptr)
指定されたparent を使用して、モデルmodel をテストするモデルテスターのインスタンスを作成します。
失敗報告モードはFailureReportingMode::QtTest に設定されます。
QAbstractItemModelTester::QAbstractItemModelTester(QAbstractItemModel *model, QAbstractItemModelTester::FailureReportingMode mode, QObject *parent = nullptr)
指定されたparent を持つモデルテスターのインスタンスを作成します。このインスタンスは、モデルmodel をテストし、指定されたmode を使用してテストの失敗を報告します。
QAbstractItemModelTester::FailureReportingModeも参照してください 。
QAbstractItemModelTester::FailureReportingMode QAbstractItemModelTester::failureReportingMode() const
このインスタンスがテストの失敗を報告するために使用しているモードを返します。
QAbstractItemModelTester::FailureReportingModeも参照してください 。
QAbstractItemModel *QAbstractItemModelTester::model() const
このインスタンスがテストしているモデルを返します。
[since 6.4] void QAbstractItemModelTester::setUseFetchMore(bool value)
value がtrueの場合、テスト対象モデルの動的な生成が有効になります(これがデフォルトです)。value がfalseの場合、この機能は無効になります。
この関数は Qt 6.4 で導入されました。
QAbstractItemModel::fetchMore()も参照してください 。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.