Класс QAbstractItemModelTester
Класс QAbstractItemModelTester помогает тестировать подклассы QAbstractItemModel. Подробнее...
| Заголовок: | #include <QAbstractItemModelTester> |
| CMake: | find_package(Qt6 COMPONENTS Test REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Test) |
| qmake: | QT += testlib |
| С момента: | Qt 5.11 |
| Наследует: | QObject |
Типы публичного доступа
| Перечисление | FailureReportingMode { QtTest, Предупреждение, КритическаяОшибка } |
Публичные функции
| QAbstractItemModelTester(QAbstractItemModel *model, QAbstractItemModelTester::FailureReportingMode mode, QObject *parent = nullptr) | |
| QAbstractItemModelTester(QAbstractItemModel *model, QObject *parent = nullptr) | |
| QAbstractItemModelTester::FailureReportingMode | failureReportingMode() const |
| QAbstractItemModel * | model() const |
Подробное описание
Класс 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.
Документация по типам членов
Перечисление QAbstractItemModelTester::FailureReportingMode
Это перечисление определяет, как QAbstractItemModelTester должен сообщать о сбое при тестировании подкласса QAbstractItemModel.
| Постоянная | Значение | Описание |
|---|---|---|
QAbstractItemModelTester::FailureReportingMode::QtTest |
0 |
Сбои будут сообщаться через механизм протоколирования QtTest. |
QAbstractItemModelTester::FailureReportingMode::Warning |
1 |
Сбои будут сообщаться как сообщения об ошибках в категории протоколирования qt.modeltest. |
QAbstractItemModelTester::FailureReportingMode::Fatal |
2 |
Сбой приведет к немедленному и ненормальному завершению программы. Причина сбоя будет сообщена с помощью qFatal(). |
Документация по функциям-членам
QAbstractItemModelTester::QAbstractItemModelTester(QAbstractItemModel *model, QAbstractItemModelTester::FailureReportingMode mode, QObject *parent = nullptr)
Создаёт экземпляр проверяющего модель, с заданным parent, который будет проверять модель model, используя заданный mode для отчёта о сбоях тестирования.
См. также QAbstractItemModelTester::FailureReportingMode.
QAbstractItemModelTester::QAbstractItemModelTester(QAbstractItemModel *model, QObject *parent = nullptr)
Создаёт экземпляр проверяющего модель, с заданным parent, который будет проверять модель model.
QAbstractItemModelTester::FailureReportingMode QAbstractItemModelTester::failureReportingMode() const
Возвращает режим, который используется этим экземпляром для отчёта о сбоях тестирования.
См. также QAbstractItemModelTester::FailureReportingMode.
QAbstractItemModel *QAbstractItemModelTester::model() const
Возвращает модель, которую проверяет этот экземпляр.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qabstractitemmodeltester.html