QAbstractItemModelTester Class
Die Klasse QAbstractItemModelTester hilft beim Testen von QAbstractItemModel Unterklassen. Mehr...
Kopfzeile: | #include <QAbstractItemModelTester> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Test) target_link_libraries(mytarget PRIVATE Qt6::Test) |
qmake: | QT += testlib |
Vererbungen: | QObject |
Öffentliche Typen
enum class | FailureReportingMode { QtTest, Warning, Fatal } |
Öffentliche Funktionen
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) |
Detaillierte Beschreibung
Die Klasse QAbstractItemModelTester ist eine Utility-Klasse zum Testen von Item-Modellen.
Bei der Implementierung eines Elementmodells (d.h. einer konkreten QAbstractItemModel Unterklasse) müssen sehr strenge Regeln beachtet werden, die die Konsistenz für die Benutzer des Modells (Ansichten, Proxy-Modelle usw.) sicherstellen.
Zum Beispiel muss die Neuimplementierung eines Modells von hasChildren() für einen bestimmten Index mit den von rowCount() und columnCount() zurückgegebenen Werten übereinstimmen.
QAbstractItemModelTester hilft dabei, die häufigsten Fehler in benutzerdefinierten Elementmodellklassen zu finden. Durch die Durchführung einer Reihe von Tests wird versucht zu überprüfen, ob der Status des Modells zu jeder Zeit konsistent ist. Die Tests werden jedes Mal automatisch wiederholt, wenn das Modell geändert wird.
QAbstractItemModelTester führt nicht-destruktive Tests durch, die typischerweise darin bestehen, Daten und Metadaten aus einem gegebenen Elementmodell auszulesen. QAbstractItemModelTester versucht auch illegale Modifikationen des Modells. In Modellen, die ordnungsgemäß implementiert sind, sollten solche Versuche zurückgewiesen werden, und es sollten infolgedessen keine Daten geändert werden.
Verwendung
Die Verwendung von QAbstractItemModelTester ist sehr einfach. In einem Testfall reicht es aus, eine Instanz zu erzeugen und das zu testende Modell an den Konstruktor zu übergeben:
MyModel *modelToBeTested = ...; auto tester = new QAbstractItemModelTester(modelToBeTested);
QAbstractItemModelTester meldet Testfehler über die Qt Test Logging-Mechanismen.
Es ist auch möglich, QAbstractItemModelTester außerhalb eines Testfalls zu verwenden. So kann es beispielsweise nützlich sein, ein von einer Anwendung verwendetes Elementmodell zu testen, ohne dass ein expliziter Unit-Test für ein solches Modell erstellt werden muss (was eine Herausforderung darstellen könnte). Um QAbstractItemModelTester außerhalb eines Testfalls zu verwenden, übergeben Sie einen der QAbstractItemModelTester::FailureReportingMode
Enumeratoren an seinen Konstruktor und legen damit fest, wie Fehler protokolliert werden sollen.
QAbstractItemModelTester kann auch zusätzliche Debugging-Informationen als Logging-Meldungen unter der Kategorie qt.modeltest
logging ausgeben. Dieses Debugging ist standardmäßig deaktiviert; lesen Sie in der QLoggingCategory Dokumentation nach, wie Sie es aktivieren können.
Hinweis: Obwohl QAbstractItemModelTester eine wertvolle Hilfe für die Entwicklung und das Testen von benutzerdefinierten Elementmodellen ist, kann es nicht alle möglichen Probleme in QAbstractItemModel Unterklassen aufspüren (und kann es auch nicht). Insbesondere kann er niemals sinnvolle destruktive Tests eines Modells durchführen, das daher separat getestet werden muss.
Siehe auch Model/View Programming und QAbstractItemModel.
Dokumentation der Mitgliedstypen
enum class QAbstractItemModelTester::FailureReportingMode
Diese Aufzählung gibt an, wie QAbstractItemModelTester einen Fehler melden soll, wenn es eine QAbstractItemModel Unterklasse testet.
Konstante | Wert | Beschreibung |
---|---|---|
QAbstractItemModelTester::FailureReportingMode::QtTest | 0 | Die Fehler werden als QtTest Testfehler gemeldet. |
QAbstractItemModelTester::FailureReportingMode::Warning | 1 | Die Fehler werden als Warnmeldungen in der Kategorie qt.modeltest logging gemeldet. |
QAbstractItemModelTester::FailureReportingMode::Fatal | 2 | Ein Fehler führt zu einem sofortigen und abnormalen Programmabbruch. Der Grund für den Fehler wird mit qFatal() gemeldet. |
Dokumentation der Mitgliedsfunktionen
QAbstractItemModelTester::QAbstractItemModelTester(QAbstractItemModel *model, QObject *parent = nullptr)
Erzeugt eine Modelltester-Instanz mit dem angegebenen parent, die das Modell model testet.
QAbstractItemModelTester::QAbstractItemModelTester(QAbstractItemModel *model, QAbstractItemModelTester::FailureReportingMode mode, QObject *parent = nullptr)
Erzeugt eine Modelltesterinstanz mit der angegebenen parent, die das Modell model testet und dabei die angegebene mode verwendet, um Testfehler zu melden.
Siehe auch QAbstractItemModelTester::FailureReportingMode.
QAbstractItemModelTester::FailureReportingMode QAbstractItemModelTester::failureReportingMode() const
Gibt den Modus zurück, den diese Instanzierung zur Meldung von Testfehlern verwendet.
Siehe auch QAbstractItemModelTester::FailureReportingMode.
QAbstractItemModel *QAbstractItemModelTester::model() const
Gibt das Modell zurück, das von dieser Instanz getestet wird.
[since 6.4]
void QAbstractItemModelTester::setUseFetchMore(bool value)
Wenn value wahr ist, wird die dynamische Population des getesteten Modells aktiviert, was die Standardeinstellung ist. Wenn value false ist, wird sie deaktiviert.
Diese Funktion wurde in Qt 6.4 eingeführt.
Siehe auch QAbstractItemModel::fetchMore().
© 2025 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.