QAbstractItemModelTester 类

QAbstractItemModelTester 类帮助测试 QAbstractItemModel 子类。 更多...

头文件 #include <QAbstractItemModelTester>
CMakefind_package(Qt6 REQUIRED COMPONENTS Test)
target_link_libraries(mytarget PRIVATE Qt6::Test)
qmakeQT += testlib
继承 QObject

公共类型

枚举类FailureReportingMode { QtTest, 警告, 致命 }

公共函数

QAbstractItemModelTester(QAbstractItemModel *model, QObject *parent = nullptr)
QAbstractItemModelTester(QAbstractItemModel *model, QAbstractItemModelTester::FailureReportingMode mode, QObject *parent = nullptr)
QAbstractItemModelTester::FailureReportingModefailureReportingMode() const
QAbstractItemModel *model() const
(自 6.4) voidsetUseFetchMore(bool value)

详细描述

QAbstractItemModelTester 类是一个用于测试项目模型的小工具类。

在实现项目模型(即具体的 QAbstractItemModel 子类)时,必须遵守非常严格的一组规则,以确保模型的用户(视图、代理模型等)的一致性。

例如,对于给定的索引,模型对 hasChildren() 的重新实现必须与 rowCount() 和 columnCount() 返回的值一致。

QAbstractItemModelTester 帮助捕获自定义项目模型类中最常见的错误。通过执行一系列测试,它将尝试检查模型状态始终保持一致。测试将在模型每次修改时自动重复。

QAbstractItemModelTester 采用了非破坏性测试,通常包括从给定的项目模型中读取数据和元数据。QAbstractItemModelTester 还会尝试非法修改模型。在实现得当的模型中,这样的尝试应该被拒绝,不应该改变数据。

用法

使用 QAbstractItemModelTester 很简单。在一个 测试案例 中,只需创建一个实例,将需要测试的模型传递给构造函数即可。

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

QAbstractItemModelTester将通过 Qt 测试日志机制报告测试失败。

除了在测试用例中,也可以使用QAbstractItemModelTester。例如,可能需要测试一个应用程序使用的模型而无需为该模型构建显式单元测试(这可能会很具挑战性)。为了在测试用例之外使用QAbstractItemModelTester,请将其构造函数传递一个QAbstractItemModelTester::FailureReportingMode枚举值,从而指定如何记录失败。

QAbstractItemModelTester还可以在qt.modeltest日志分类下报告附加的调试信息作为日志消息。这种调试日志默认情况下是禁用的;请参阅QLoggingCategory文档,了解如何启用它。

注意:虽然QAbstractItemModelTester是自定义项目样式自定义的开发和测试的合法帮助,但它(不能)捕获QAbstractItemModel子类中所有可能的问题。值得注意的是,它永远不会对模型执行有意义的破坏性测试,因此必须单独测试这些模型。

另请参阅:模型/视图编程QAbstractItemModel

成员类型文档

enum class QAbstractItemModelTester::FailureReportingMode

此枚举指定在测试QAbstractItemModel子类时,QAbstractItemModelTester如何报告失败。

常量描述
QAbstractItemModelTester::FailureReportingMode::QtTest0失败将报告为QtTest测试失败。
QAbstractItemModelTester::FailureReportingMode::Warning1失败将被报告为qt.modeltest日志分类中的警告消息。
QAbstractItemModelTester::FailureReportingMode::Fatal2失败将导致程序立即且异常地终止。失败的原因将通过qFatal()报告。

成员函数文档

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

创建一个具有给定parent的模型测试实例,该实例将测试模型model

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

创建一个具有给定parent的模型测试实例,该实例将使用指定的mode测试模型model并报告测试失败。

另请参阅:QAbstractItemModelTester::FailureReportingMode

QAbstractItemModelTester::FailureReportingMode QAbstractItemModelTester::failureReportingMode() const

返回此实例用于报告测试失败的模式。

另请参阅:QAbstractItemModelTester::FailureReportingMode

QAbstractItemModel *QAbstractItemModelTester::model() const

返回此实例正在测试的模型。

[自6.4版本起] void QAbstractItemModelTester::setUseFetchMore(bool value)

如果 value 设置为 true,则启用了动态填充测试模型,这是默认行为。如果 value 设置为 false,则禁用它。

此函数在 Qt 6.4 版本中引入。

另请参阅QAbstractItemModel::fetchMore

© 2024 The Qt Company Ltd。此处包含的文档贡献的版权属于各自的拥有者。本提供的文档受 GNU Free Documentation License 第1.3版 的条款约束,由自由软件基金会发布。Qt 及其相关标志是芬兰及/或其他国家的 The Qt Company Ltd 的商标。所有其他商标均归其各自所有者所有。