QAbstractItemModelTester Class
QAbstractItemModelTester 클래스는 ` QAbstractItemModel `의 하위 클래스를 테스트하는 데 도움이 됩니다. 더 보기...
| 헤더: | #include <QAbstractItemModelTester> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Test) target_link_libraries(mytarget PRIVATE Qt6::Test) |
| qmake: | QT += testlib |
| 상속: | QObject |
공개 타입
| enum class | FailureReportingMode { QtTest, Warning, Fatal } |
공개 함수
| 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) |
상세 설명
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 ’항목도 참조하십시오 .
멤버 유형 문서
enum class QAbstractItemModelTester::FailureReportingMode
이 열거형은 ` QAbstractItemModelTester `가 ` QAbstractItemModel `의 하위 클래스를 테스트할 때 오류 발생 시 보고 방식을 지정합니다.
| 상수 | 값 | 설명 |
|---|---|---|
QAbstractItemModelTester::FailureReportingMode::QtTest | 0 | 오류는 QtTest 테스트 오류로 보고됩니다. |
QAbstractItemModelTester::FailureReportingMode::Warning | 1 | 오류는 qt.modeltest 로깅 범주에서 경고 메시지로 보고됩니다. |
QAbstractItemModelTester::FailureReportingMode::Fatal | 2 | 오류가 발생하면 프로그램이 즉시 비정상적으로 종료됩니다. 오류 원인은 qFatal() 을 사용하여 보고됩니다. |
멤버 함수 설명
QAbstractItemModelTester::QAbstractItemModelTester(QAbstractItemModel *model, QObject *parent = nullptr)
지정된 parent 를 사용하여 모델 model 을 테스트할 모델 테스터 인스턴스를 생성합니다.
오류 보고 모드는 FailureReportingMode::QtTest 로 설정됩니다.
QAbstractItemModelTester::QAbstractItemModelTester(QAbstractItemModel *model, QAbstractItemModelTester::FailureReportingMode mode, QObject *parent = nullptr)
지정된 parent 를 사용하여 모델 테스터 인스턴스를 생성하며, 이 인스턴스는 model 모델을 테스트하고, 지정된 mode 를 통해 테스트 실패 결과를 보고합니다.
QAbstractItemModelTester::FailureReportingMode도 참조하십시오 .
QAbstractItemModelTester::FailureReportingMode QAbstractItemModelTester::failureReportingMode() const
이 인스턴스가 테스트 실패를 보고하는 데 사용하는 모드를 반환합니다.
QAbstractItemModelTester::FailureReportingMode도 참조하십시오 .
QAbstractItemModel *QAbstractItemModelTester::model() const
이 인스턴스가 테스트 중인 모델을 반환합니다.
[since 6.4] void QAbstractItemModelTester::setUseFetchMore(bool value)
value 가 true인 경우, 테스트 대상 모델의 동적 생성 기능을 활성화하며, 이는 기본값입니다. value 가 false인 경우, 이 기능을 비활성화합니다.
이 함수는 Qt 6.4에서 도입되었습니다.
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.