IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

QAbstractItemModelTester Class

The QAbstractItemModelTester class helps testing QAbstractItemModel subclasses.

This class was introduced in Qt 5.11.

Article lu   fois.

L'auteur

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

QAbstractItemModelTester Class

  • Header: QAbstractItemModelTester

  • Since: Qt 5.11

  • CMake:

    find_package(Qt6 REQUIRED COMPONENTS Test)

    target_link_libraries(mytarget PRIVATE Qt6::Test)

  • qmake: QT += testlib

  • Inherits: QObject

Detailed Description

The QAbstractItemModelTester class is a utility class to test item models.

When implementing an item model (that is, a concrete QAbstractItemModel subclass) one must abide to a very strict set of rules that ensure consistency for users of the model (views, proxy models, and so on).

For instance, for a given index, a model's reimplementation of hasChildren() must be consistent with the values returned by rowCount() and columnCount().

QAbstractItemModelTester helps catching the most common errors in custom item model classes. By performing a series of tests, it will try to check that the model status is consistent at all times. The tests will be repeated automatically every time the model is modified.

QAbstractItemModelTester employs non-destructive tests, which typically consist in reading data and metadata out of a given item model. QAbstractItemModelTester will also attempt illegal modifications of the model. In models which are properly implemented, such attempts should be rejected, and no data should be changed as a consequence.

Usage

Using QAbstractItemModelTester is straightforward. In a test case it is sufficient to create an instance, passing the model that needs to be tested to the constructor:

 
Sélectionnez
MyModel *modelToBeTested = ...;
auto tester = new QAbstractItemModelTester(modelToBeTested);

QAbstractItemModelTester will report testing failures through the Qt Test logging mechanisms.

It is also possible to use QAbstractItemModelTester outside of a test case. For instance, it may be useful to test an item model used by an application without the need of building an explicit unit test for such a model (which might be challenging). In order to use QAbstractItemModelTester outside of a test case, pass one of the QAbstractItemModelTester::FailureReportingMode enumerators to its constructor, therefore specifying how failures should be logged.

QAbstractItemModelTester may also report additional debugging information as logging messages under the qt.modeltest logging category. Such debug logging is disabled by default; refer to the QLoggingCategory documentation to learn how to enable it.

While QAbstractItemModelTester is a valid help for development and testing of custom item models, it does not (and cannot) catch all possible problems in QAbstractItemModel subclasses. Notably, it will never perform meaningful destructive testing of a model, which must be therefore tested separately.

See Also

Member Type Documentation

 

enum QAbstractItemModelTester::FailureReportingMode

This enumeration specifies how QAbstractItemModelTester should report a failure when it tests a QAbstractItemModel subclass.

Constant

Value

Description

QAbstractItemModelTester::FailureReportingMode::QtTest

0

The failures will be reported as QtTest test failures.

QAbstractItemModelTester::FailureReportingMode::Warning

1

The failures will be reported as warning messages in the qt.modeltest logging category.

QAbstractItemModelTester::FailureReportingMode::Fatal

2

A failure will cause immediate and abnormal program termination. The reason for the failure will be reported using qFatal().

Member Function Documentation

 

QAbstractItemModelTester::QAbstractItemModelTester(QAbstractItemModel *model, QObject *parent = nullptr)

Creates a model tester instance, with the given parent, that will test the model model.

QAbstractItemModelTester::QAbstractItemModelTester(QAbstractItemModel *model, QAbstractItemModelTester::FailureReportingMode mode, QObject *parent = nullptr)

Creates a model tester instance, with the given parent, that will test the model model, using the specified mode to report test failures.

See Also

QAbstractItemModelTester::FailureReportingMode QAbstractItemModelTester::failureReportingMode() const

Returns the mode that this instancing is using to report test failures.

See Also

QAbstractItemModel *QAbstractItemModelTester::model() const

Returns the model that this instance is testing.

[since 6.4] void QAbstractItemModelTester::setUseFetchMore(bool value)

If value is true, enables dynamic population of the tested model, which is the default. If value is false, it disables it.

This function was introduced in Qt 6.4.

See Also

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+