QAbstractItemModelTester Class
La classe QAbstractItemModelTester permet de tester les sous-classes de QAbstractItemModel. Plus d'informations...
| En-tête : | #include <QAbstractItemModelTester> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Test)target_link_libraries(mytarget PRIVATE Qt6::Test) |
| qmake : | QT += testlib |
| Héritages : | QObject |
Types publics
| enum class | FailureReportingMode { QtTest, Warning, Fatal } |
Fonctions publiques
| 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) |
Description détaillée
La classe QAbstractItemModelTester est une classe utilitaire permettant de tester les modèles d'éléments.
Lors de l'implémentation d'un modèle d'élément (c'est-à-dire une sous-classe concrète de QAbstractItemModel ), il faut respecter un ensemble de règles très strictes qui garantissent la cohérence pour les utilisateurs du modèle (vues, modèles proxy, etc.).
Par exemple, pour un index donné, la réimplémentation de hasChildren() par un modèle doit être cohérente avec les valeurs renvoyées par rowCount() et columnCount().
QAbstractItemModelTester permet de détecter les erreurs les plus courantes dans les classes de modèles d'éléments personnalisés. En effectuant une série de tests, il essaiera de vérifier que l'état du modèle est cohérent à tout moment. Les tests seront répétés automatiquement chaque fois que le modèle sera modifié.
QAbstractItemModelTester utilise des tests non destructifs, qui consistent généralement à lire les données et les métadonnées d'un modèle d'élément donné. QAbstractItemModelTester tente également d'effectuer des modifications illégales du modèle. Dans les modèles correctement implémentés, de telles tentatives devraient être rejetées, et aucune donnée ne devrait être modifiée en conséquence.
Utilisation de QAbstractItemModelTester
L'utilisation de QAbstractItemModelTester est simple. Dans un scénario de test, il suffit de créer une instance, en passant le modèle à tester au constructeur :
MyModel *modelToBeTested = ...; auto tester = new QAbstractItemModelTester(modelToBeTested);
QAbstractItemModelTester signalera les échecs des tests par le biais des mécanismes de journalisation de Qt Test.
Il est également possible d'utiliser QAbstractItemModelTester en dehors d'un cas de test. Par exemple, il peut être utile de tester un modèle d'élément utilisé par une application sans avoir à construire un test unitaire explicite pour un tel modèle (ce qui peut être difficile). Pour utiliser QAbstractItemModelTester en dehors d'un scénario de test, il faut passer l'un des énumérateurs QAbstractItemModelTester::FailureReportingMode à son constructeur, ce qui permet de spécifier comment les échecs doivent être enregistrés.
QAbstractItemModelTester peut également rapporter des informations de débogage supplémentaires sous forme de messages de journalisation dans la catégorie qt.modeltest logging. Cette journalisation de débogage est désactivée par défaut ; reportez-vous à la documentation de QLoggingCategory pour savoir comment l'activer.
Note : Bien que QAbstractItemModelTester soit une aide valable pour le développement et le test de modèles d'éléments personnalisés, il ne détecte pas (et ne peut pas détecter) tous les problèmes possibles dans les sous-classes de QAbstractItemModel. En particulier, il n'effectuera jamais de tests destructifs significatifs d'un modèle, qui doit donc être testé séparément.
Voir également Programmation Modèle/Vue et QAbstractItemModel.
Documentation sur les types de membres
enum class QAbstractItemModelTester::FailureReportingMode
Cette énumération indique comment QAbstractItemModelTester doit signaler un échec lorsqu'il teste une sous-classe de QAbstractItemModel.
| Constante | Valeur | Description |
|---|---|---|
QAbstractItemModelTester::FailureReportingMode::QtTest | 0 | Les échecs sont signalés comme des échecs de test sur QtTest. |
QAbstractItemModelTester::FailureReportingMode::Warning | 1 | Les échecs sont signalés sous forme de messages d'avertissement dans la catégorie de journalisation qt.modeltest. |
QAbstractItemModelTester::FailureReportingMode::Fatal | 2 | Un échec entraîne l'arrêt immédiat et anormal du programme. La raison de l'échec sera signalée à l'aide de qFatal(). |
Documentation des fonctions membres
QAbstractItemModelTester::QAbstractItemModelTester(QAbstractItemModel *model, QObject *parent = nullptr)
Crée une instance de testeur de modèle, avec la valeur donnée parent, qui testera le modèle model.
Le mode de rapport d'échec est défini sur FailureReportingMode::QtTest.
QAbstractItemModelTester::QAbstractItemModelTester(QAbstractItemModel *model, QAbstractItemModelTester::FailureReportingMode mode, QObject *parent = nullptr)
Crée une instance de testeur de modèle, avec l'adresse parent, qui testera le modèle model, en utilisant l'adresse mode pour signaler les échecs des tests.
Voir aussi QAbstractItemModelTester::FailureReportingMode.
QAbstractItemModelTester::FailureReportingMode QAbstractItemModelTester::failureReportingMode() const
Renvoie le mode utilisé par cette instanciation pour signaler les échecs des tests.
Voir aussi QAbstractItemModelTester::FailureReportingMode.
QAbstractItemModel *QAbstractItemModelTester::model() const
Renvoie le modèle que cette instance teste.
[since 6.4] void QAbstractItemModelTester::setUseFetchMore(bool value)
Si value est vrai, il active la population dynamique du modèle testé, ce qui est la valeur par défaut. Si value est faux, elle la désactive.
Cette fonction a été introduite dans Qt 6.4.
Voir aussi 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.