QTest Namespace

QTest 네임스페이스에는 Qt Test 과 관련된 모든 함수와 선언이 포함되어 있습니다. 더 보기...

헤더: #include <QTest>
CMake: find_package(Qt6 REQUIRED COMPONENTS Test)
target_link_libraries(mytarget PRIVATE Qt6::Test)
qmake: QT += testlib

클래스

class QTouchEventSequence
(since 6.8) class ThrowOnFailDisabler
(since 6.8) class ThrowOnFailEnabler
(since 6.8) class ThrowOnSkipDisabler
(since 6.8) class ThrowOnSkipEnabler

타입

enum KeyAction { Press, Release, Click, Shortcut }
enum MouseAction { MousePress, MouseRelease, MouseClick, MouseDClick, MouseMove }
enum QBenchmarkMetric { FramesPerSecond, BitsPerSecond, BytesPerSecond, WalltimeMilliseconds, WalltimeNanoseconds, …, EmulationFaults }
enum TestFailMode { Abort, Continue }

함수

void addColumn(const char *name, T *dummy = 0)
QTestData &addRow(const char *format, ...)
const char *benchmarkMetricName(QTest::QBenchmarkMetric metric)
const char *benchmarkMetricUnit(QTest::QBenchmarkMetric metric)
QPointingDevice *createTouchDevice(QInputDevice::DeviceType devType = QInputDevice::DeviceType::TouchScreen, QInputDevice::Capabilities caps = QInputDevice::Capability::Position)
const char *currentAppName()
const char *currentDataTag()
bool currentTestFailed()
const char *currentTestFunction()
(since 6.5) bool currentTestResolved()
(since 6.3) void failOnWarning(const QRegularExpression &messagePattern)
(since 6.8) void failOnWarning()
(since 6.3) void failOnWarning(const char *message)
void ignoreMessage(QtMsgType type, const char *message)
void ignoreMessage(QtMsgType type, const QRegularExpression &messagePattern)
void keyClick(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyClick(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyClick(QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyClick(QWindow *window, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyClicks(QWidget *widget, const QString &sequence, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyEvent(QTest::KeyAction action, QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyEvent(QTest::KeyAction action, QWidget *widget, char ascii, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyEvent(QTest::KeyAction action, QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyEvent(QTest::KeyAction action, QWindow *window, char ascii, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyPress(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyPress(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyPress(QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyPress(QWindow *window, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyRelease(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyRelease(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyRelease(QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keyRelease(QWindow *window, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void keySequence(QWidget *widget, const QKeySequence &keySequence)
void keySequence(QWindow *window, const QKeySequence &keySequence)
void mouseClick(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)
void mouseClick(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)
void mouseDClick(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)
void mouseDClick(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)
void mouseMove(QWidget *widget, QPoint pos = QPoint(), int delay = -1)
void mouseMove(QWindow *window, QPoint pos = QPoint(), int delay = -1)
void mousePress(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)
void mousePress(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)
void mouseRelease(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)
void mouseRelease(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)
QTestData &newRow(const char *dataTag)
int qExec(QObject *testObject, int argc = 0, char **argv = nullptr)
int qExec(QObject *testObject, const QStringList &arguments)
QSharedPointer<QTemporaryDir> qExtractTestData(const QString &dirName)
(since 6.5) void qRegisterTestCase(const QString &name, QTest::TestEntryFunction entryFunction)
(since 6.7) void qSleep(std::chrono::milliseconds msecs)
void qSleep(int ms)
(since 6.7) void qWait(std::chrono::milliseconds msecs)
void qWait(int msecs)
(since 6.7) bool qWaitFor(Functor predicate, QDeadlineTimer deadline = QDeadlineTimer(std::chrono::seconds{5}))
bool qWaitFor(Functor predicate, int timeout)
bool qWaitForWindowActive(QWidget *widget, int timeout = 5000)
bool qWaitForWindowActive(QWindow *window, int timeout = 5000)
bool qWaitForWindowExposed(QWidget *widget, int timeout = 5000)
bool qWaitForWindowExposed(QWindow *window, int timeout = 5000)
(since 6.7) bool qWaitForWindowFocused(QWidget *widget, QDeadlineTimer timeout = std::chrono::seconds{5})
(since 6.7) bool qWaitForWindowFocused(QWindow *window, QDeadlineTimer timeout = std::chrono::seconds{5})
void setBenchmarkResult(qreal result, QTest::QBenchmarkMetric metric)
(since 6.8) void setThrowOnFail(bool enable)
(since 6.8) void setThrowOnSkip(bool enable)
char *toHexRepresentation(const char *ba, qsizetype length)
char *toString(QSizePolicy sp)
char *toString(const T &value)
char *toString(const QVector4D &v)
char *toString(const std::pair<T1, T2> &pair)
char *toString(const std::tuple<Types...> &tuple)
char *toString(std::nullptr_t)
char *toString(QSizePolicy::ControlType ct)
char *toString(QSizePolicy::ControlTypes cts)
char *toString(QSizePolicy::Policy p)
char *toString(const QByteArray &ba)
char *toString(const QCborError &c)
char *toString(const QChar &character)
char *toString(const QDate &date)
char *toString(const QDateTime &dateTime)
(since 6.5) char *toString(const QKeySequence &ks)
char *toString(const QLatin1StringView &string)
char *toString(const QPoint &point)
char *toString(const QPointF &point)
char *toString(const QRect &rectangle)
char *toString(const QRectF &rectangle)
char *toString(const QSize &size)
char *toString(const QSizeF &size)
char *toString(const QString &string)
char *toString(const QStringView &string)
char *toString(const QTime &time)
char *toString(const QUrl &url)
char *toString(const QUuid &uuid)
char *toString(const QVariant &variant)
char *toString(const QVector2D &v)
char *toString(const QVector3D &v)
QTest::QTouchEventWidgetSequence touchEvent(QWidget *widget, QPointingDevice *device, bool autoCommit = true)
QTest::QTouchEventSequence touchEvent(QWindow *window, QPointingDevice *device, bool autoCommit = true)
(since 6.8) void wheelEvent(QWindow *window, QPointF pos, QPoint angleDelta, QPoint pixelDelta = QPoint(0, 0), Qt::KeyboardModifiers stateKey = Qt::NoModifier, Qt::ScrollPhase phase = Qt::NoScrollPhase)

매크로

QBENCHMARK
QBENCHMARK_ONCE
QCOMPARE(실제, 예상)
(since 6.4) QCOMPARE_EQ(계산된, 기준선)
(since 6.4) QCOMPARE_GE(계산된, 기준선)
(since 6.4) QCOMPARE_GT(계산된, 기준선)
(since 6.4) QCOMPARE_LE(계산됨, 기준선)
(since 6.4) QCOMPARE_LT(계산됨, 기준선)
(since 6.4) QCOMPARE_NE(계산됨, 기준선)
QEXPECT_FAIL(dataIndex, comment, mode)
QFAIL(message)
QFETCH(type, name)
QFETCH_GLOBAL(유형, 이름)
QFINDTESTDATA(파일명)
QSKIP(description)
QTEST(실제, 테스트 엘리먼트)
QTEST_APPLESS_MAIN(TestClass)
QTEST_GUILESS_MAIN(TestClass)
QTEST_MAIN(TestClass)
QTRY_COMPARE(실제, 예상)
(since 6.4) QTRY_COMPARE_EQ(계산된, 기준선)
(since 6.4) QTRY_COMPARE_EQ_WITH_TIMEOUT(계산됨, 기준선, 시간 초과)
(since 6.4) QTRY_COMPARE_GE(계산됨, 기준선)
(since 6.4) QTRY_COMPARE_GE_WITH_TIMEOUT(계산됨, 기준선, 시간 초과)
(since 6.4) QTRY_COMPARE_GT(계산됨, 기준선)
(since 6.4) QTRY_COMPARE_GT_WITH_TIMEOUT(계산됨, 기준선, 시간 초과)
(since 6.4) QTRY_COMPARE_LE(계산됨, 기준선)
(since 6.4) QTRY_COMPARE_LE_WITH_TIMEOUT(계산됨, 기준선, 시간 초과)
(since 6.4) QTRY_COMPARE_LT(계산됨, 기준선)
(since 6.4) QTRY_COMPARE_LT_WITH_TIMEOUT(계산됨, 기준선, 시간 초과)
(since 6.4) QTRY_COMPARE_NE(계산됨, 기준선)
(since 6.4) QTRY_COMPARE_NE_WITH_TIMEOUT(계산됨, 기준선, 시간 초과)
QTRY_COMPARE_WITH_TIMEOUT(실제, 예상, 시간 초과)
QTRY_VERIFY2(조건, 메시지)
QTRY_VERIFY(조건)
QTRY_VERIFY2_WITH_TIMEOUT(조건, 메시지, 시간 초과)
QTRY_VERIFY_WITH_TIMEOUT(조건, 시간 초과)
QVERIFY2(조건, 메시지)
QVERIFY(조건)
(since 6.3) QVERIFY_THROWS_EXCEPTION(예외 유형, ...)
(since 6.3) QVERIFY_THROWS_NO_EXCEPTION(...)

자세한 설명

단위 테스트를 작성하는 방법에 대한 자세한 내용은 Qt Test 개요를 참조하세요.

클래스

QTouchEventSequence 클래스

QTouchEventSequence 클래스는 터치 이벤트 시퀀스를 시뮬레이션하는 데 사용됩니다. 더 보기...

ThrowOnFailDisabler 클래스

ThrowOnFailEnabler 클래스

ThrowOnSkipDisabler 클래스

ThrowOnSkipEnabler 클래스

유형 문서

enum QTest::KeyAction

이 열거형은 키 처리에 대해 가능한 작업을 설명합니다.

Constant설명
QTest::Press0키가 눌려집니다.
QTest::Release1키를 놓습니다.
QTest::Click2키를 클릭(눌렀다가 놓음)합니다.
QTest::Shortcut3바로가기가 활성화됩니다. 이 값은 Qt 5.6에 추가되었습니다.

enum QTest::MouseAction

이 열거형은 마우스 처리에 대해 가능한 동작을 설명합니다.

Constant설명
QTest::MousePress0마우스 버튼을 눌렀습니다.
QTest::MouseRelease1마우스 버튼이 해제됩니다.
QTest::MouseClick2마우스 버튼을 클릭합니다(눌렀다가 놓음).
QTest::MouseDClick3마우스 버튼을 두 번 클릭(두 번 눌렀다가 놓음)했습니다.
QTest::MouseMove4마우스 포인터가 이동했습니다.

enum QTest::QBenchmarkMetric

이 열거형에는 벤치마킹할 수 있는 모든 항목이 나열됩니다.

Constant설명
QTest::FramesPerSecond0초당 프레임
QTest::BitsPerSecond1초당 비트
QTest::BytesPerSecond2초당 바이트
QTest::WalltimeMilliseconds3밀리초 단위의 시계 시간
QTest::WalltimeNanoseconds7나노초 단위의 시계 시간
QTest::BytesAllocated8메모리 사용량(바이트)
QTest::Events6이벤트 수
QTest::CPUTicks4CPU 시간
QTest::CPUMigrations9CPU 간 프로세스 마이그레이션
QTest::CPUCycles10CPU 주기
QTest::RefCPUCycles30참조 CPU 주기
QTest::BusCycles11버스 주기
QTest::StalledCycles12정지된 사이클
QTest::InstructionReads5명령어 읽기
QTest::Instructions13실행된 명령어
QTest::BranchInstructions14분기 유형 명령어
QTest::BranchMisses15잘못 예측된 분기 명령어
QTest::CacheReferences16모든 유형의 캐시 액세스
QTest::CacheMisses20모든 유형의 캐시 미스
QTest::CacheReads17캐시 읽기/로드
QTest::CacheReadMisses21캐시 읽기/로드 미스
QTest::CacheWrites18캐시 쓰기/저장
QTest::CacheWriteMisses22캐시 쓰기/저장 미스
QTest::CachePrefetches19캐시 프리페치
QTest::CachePrefetchMisses23캐시 프리페치 미스
QTest::ContextSwitches24컨텍스트 스위치
QTest::PageFaults25모든 유형의 페이지 오류
QTest::MinorPageFaults26사소한 페이지 결함
QTest::MajorPageFaults27주요 페이지 결함
QTest::AlignmentFaults28정렬 오류로 인해 발생한 결함
QTest::EmulationFaults29소프트웨어 에뮬레이션이 필요한 결함

WalltimeNanosecondsBytesAllocatedsetBenchmarkResult()를 통해서만 사용하도록 제공되며, 이러한 메트릭의 결과는 QTest 프레임워크에서 자동으로 제공되지 않습니다.

QTest::benchmarkMetricName() 및 QTest::benchmarkMetricUnit()도 참조하세요 .

enum QTest::TestFailMode

이 열거형은 QVERIFY() 또는 QCOMPARE() 매크로와 같이 실패한 것으로 알려진 검사를 처리하는 모드를 설명합니다. 이 모드는 검사 실패 또는 성공 여부에 관계없이 적용됩니다.

Constant설명
QTest::Abort1테스트 실행을 중단합니다. 문제가 있는 검사 후 테스트를 더 이상 실행하는 것이 합리적이지 않을 때 이 모드를 사용합니다.
QTest::Continue2문제가 있는 검사 후 테스트 실행을 계속합니다.

QEXPECT_FAIL()도 참조하세요 .

함수 문서

template <typename T> void QTest::addColumn(const char *name, T *dummy = 0)

현재 테스트 데이터에 T 유형의 열을 추가합니다. name 은 열의 이름입니다. dummy 은 버그가 있는 컴파일러를 위한 해결 방법이며 무시할 수 있습니다.

열을 값으로 채우려면 newRow()를 사용할 수 있습니다. 실제 테스트에서 데이터를 가져오려면 QFETCH()를 사용합니다.

예시:

    QTest::addColumn<int>("intval");
    QTest::addColumn<QString>("str");
    QTest::addColumn<double>("dbl");
    QTest::newRow("row1") << 1 << "hello" << 1.5;

참고: 이 함수는 테스트 프레임워크에서 호출되는 테스트의 데이터 함수의 일부로만 호출할 수 있습니다.

더 자세한 예는 데이터 기반 테스트를 참조하세요.

QTest::newRow(), QFETCH() 및 QMetaType참조하세요 .

QTestData &QTest::addRow(const char *format, ...)

현재 테스트 데이터에 새 행을 추가합니다.

함수의 인수는 format 에 따라 서식을 지정하기 위해 std::snprintf()로 전달됩니다. 주의 사항 및 제한 사항은 std::snprintf() 설명서를 참조하세요.

테스트 출력은 이 포맷의 결과 이름을 사용하여 이 테스트 데이터로 실행된 테스트를 식별합니다.

테이블의 각 열에 대해 하나의 값씩 데이터를 스트리밍하는 데 사용할 수 있는 QTestData 참조를 반환합니다.

예시:

    QTest::addColumn<int>("input");
    QTest::addColumn<QString>("output");
    QTest::addRow("%d", 0) << 0 << QString("0");
    QTest::addRow("%d", 1) << 1 << QString("1");

참고: 이 함수는 테스트 프레임워크에서 호출되는 테스트의 데이터 함수의 일부로만 호출할 수 있습니다.

더 자세한 예는 데이터 기반 테스트를 참조하세요.

newRow(), addColumn() 및 QFETCH()도 참조하세요 .

const char *QTest::benchmarkMetricName(QTest::QBenchmarkMetric metric)

열거형 값 metric 을 문자열로 반환합니다.

const char *QTest::benchmarkMetricUnit(QTest::QBenchmarkMetric metric)

지정된 metric 에 대한 측정 단위를 반환합니다.

QPointingDevice *QTest::createTouchDevice(QInputDevice::DeviceType devType = QInputDevice::DeviceType::TouchScreen, QInputDevice::Capabilities caps = QInputDevice::Capability::Position)

터치 이벤트 시뮬레이션을 위해 caps 기능을 갖춘 devType 유형의 더미 터치 디바이스를 만듭니다.

이 터치 디바이스는 Qt 윈도우 시스템 인터페이스에 등록됩니다. 일반적으로 createTouchDevice()를 사용하여 테스트 케이스 클래스에서 QPointingDevice 멤버 변수를 초기화하고 모든 테스트에 동일한 인스턴스를 사용하며 더 이상 필요하지 않은 경우 삭제해야 합니다.

QTest::QTouchEventSequencetouchEvent()도 참조하세요 .

const char *QTest::currentAppName()

현재 실행 중인 바이너리의 이름을 반환합니다.

const char *QTest::currentDataTag()

현재 테스트 데이터의 이름을 반환합니다. 테스트에 할당된 테스트 데이터가 없는 경우 이 함수는 nullptr 을 반환합니다.

bool QTest::currentTestFailed()

현재 테스트 함수가 실패하면 true, 그렇지 않으면 false를 반환합니다.

QTest::currentTestResolved()도 참조하세요 .

const char *QTest::currentTestFunction()

현재 실행 중인 테스트 함수의 이름을 반환합니다.

예제:

void MyTestClass::cleanup()
{
    if (qstrcmp(QTest::currentTestFunction(), "myDatabaseTest") == 0) {
        // clean up all database connections
        closeAllDatabases();
    }
}

[since 6.5] bool QTest::currentTestResolved()

현재 테스트 함수가 실패했거나 건너뛴 경우 true 을 반환합니다.

테스트가 실패했거나 건너뛰기를 실행한 경우에 적용됩니다. 참이면 테스트 함수가 일찍 반환되어야 합니다. 특히 QTRY_* 매크로와 테스트 이벤트 루프는 테스트 함수 중에 실행되는 경우 루프를 일찍 종료합니다(단, cleanup() 함수는 제외). 테스트가 이 모듈의 매크로를 사용하는 헬퍼 함수를 호출한 후 이 함수를 사용하여 조기 반환 여부를 테스트할 수 있습니다.

이 함수는 Qt 6.5에 도입되었습니다.

QTest::currentTestFailed()도 참조하십시오 .

[since 6.3] void QTest::failOnWarning(const QRegularExpression &messagePattern)

messagePattern 과 일치하는 각 경고에 대해 테스트 로그에 테스트 실패를 추가합니다.

실패가 추가되면 테스트 함수는 계속 실행됩니다. 대신 테스트를 중단하려면 currentTestFailed()를 확인하고 true 에 해당하는 경우 일찍 반환할 수 있습니다.

각 경고에 대해 일치하는 첫 번째 패턴은 실패를 유발하고 나머지 패턴은 무시됩니다.

모든 패턴은 각 테스트 함수가 끝날 때 지워집니다.

void FileTest::loadFiles() { QTest::failOnWarning(QRegularExpression("^로드에 실패했습니다")); // 각각 테스트 실패를 유발합니다:    qWarning() << "Failed to load image";
    qWarning() << "Failed to load video";
}

주어진 경고를 트리거하는 모든 테스트를 실패시키려면 이 함수에 적절한 정규식을 init()에 전달하세요:

void FileTest::init()
{
    QTest::failOnWarning(
        QRegularExpression("QFile::.*: File(.*) already open"));
}

모든 경고에서 실패하는 일반적인 경우에는 매개변수를 전달하지 않습니다:

void FileTest::init()
{
    QTest::failOnWarning();
}

참고: ignoreMessage()가 이 함수보다 우선하므로 ignoreMessage()failOnWarning() 모두에 주어진 패턴과 일치하는 모든 경고는 무시됩니다.

이 함수는 Qt 6.3에 도입되었습니다.

QTEST_FATAL_FAIL도참조하십시오 .

[since 6.8] void QTest::failOnWarning()

이 함수는 failOnWarning()을 오버로드합니다.

경고가 출력되면 테스트 로그에 테스트 실패를 추가합니다.

이 함수는 Qt 6.8에 도입되었습니다.

failOnWarning()도 참조하십시오 .

[since 6.3] void QTest::failOnWarning(const char *message)

이 함수는 failOnWarning()을 오버로드합니다.

message 가 출력되면 테스트 로그에 테스트 실패를 추가합니다.

이 함수는 Qt 6.3에 도입되었습니다.

failOnWarning()도 참조하십시오 .

void QTest::ignoreMessage(QtMsgType type, const char *message)

qDebug(), qInfo() 또는 qWarning()에서 생성된 메시지는 무시합니다. 해당 type 이 포함된 message 이 출력되면 테스트 로그에서 제거됩니다. 테스트가 완료되었지만 message 이 출력되지 않으면 테스트 로그에 테스트 실패가 추가됩니다.

참고: 이 함수를 호출하면 하나의 메시지만 무시됩니다. 무시하려는 메시지가 두 번 출력되는 경우 무시 메시지()도 두 번 호출해야 합니다.

예시:

QDir dir;
QTest::ignoreMessage(QtWarningMsg, "QDir::mkdir: Empty or null file name(s)");
dir.mkdir("");

위의 예에서는 QDir::mkdir()가 잘못된 파일 이름으로 호출될 때 올바른 경고를 출력하는지 테스트합니다.

void QTest::ignoreMessage(QtMsgType type, const QRegularExpression &messagePattern)

이 함수는 과부하된 함수입니다.

qDebug(), qInfo() 또는 qWarning()에서 만든 메시지는 무시합니다. messagePattern 에 해당하는 type 과 일치하는 메시지가 출력되면 테스트 로그에서 제거됩니다. 테스트가 완료되었지만 메시지가 출력되지 않으면 테스트 로그에 테스트 실패가 추가됩니다.

참고: 이 함수를 호출하면 하나의 메시지만 무시됩니다. 무시하려는 메시지가 두 번 출력되는 경우 무시 메시지()도 두 번 호출해야 합니다.

void QTest::keyClick(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

widget 에서 선택 사항인 modifier 을 사용하여 key 클릭을 시뮬레이션합니다. delay 이 0보다 크면 테스트는 키를 클릭하기 전에 delay 밀리초 동안 기다립니다.

예제:

QTest::keyClick(myWidget, Qt::Key_Escape);

QTest::keyClick(myWidget, Qt::Key_Escape, Qt::ShiftModifier, 200);

위의 첫 번째 예는 myWidget 에서 키보드 수정자 없이 지연 없이 escape 키를 클릭하는 것을 시뮬레이션합니다. 두 번째 예는 테스트가 200밀리초 지연된 후 myWidget 에서 shift-escape 을 클릭하는 것을 시뮬레이션합니다.

QTest::keyClicks()도 참조하세요 .

void QTest::keyClick(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

이 함수는 오버로드된 함수입니다.

widget 에서 선택 사항인 modifier 을 사용하여 key 클릭을 시뮬레이션합니다. delay 이 0보다 크면 테스트는 키를 클릭하기 전에 delay 밀리초 동안 기다립니다.

예시:

QTest::keyClick(myWidget, 'a');

위의 예는 키보드 수정자 없이 테스트 지연 없이 myWidget 에서 a 클릭을 시뮬레이션합니다.

QTest::keyClicks()도 참조하세요 .

void QTest::keyClick(QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

이 함수는 오버로드된 함수입니다.

window 에서 선택 사항인 modifier 을 사용하여 key 클릭을 시뮬레이션합니다. delay 이 0보다 크면 테스트는 키를 클릭하기 전에 delay 밀리초 동안 기다립니다.

예시:

QTest::keyClick(&myWindow, Qt::Key_Escape);
QTest::keyClick(&myWindow, Qt::Key_Escape, Qt::ShiftModifier, 200);

위의 첫 번째 예는 myWindow 에서 키보드 수정자 없이 지연 없이 escape 키를 클릭하는 것을 시뮬레이션합니다. 두 번째 예는 테스트가 200밀리초 지연된 후 myWindow 에서 shift-escape 을 클릭하는 것을 시뮬레이션합니다.

QTest::keyClicks()도 참조하세요 .

void QTest::keyClick(QWindow *window, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

이 함수는 오버로드된 함수입니다.

window 에서 선택 사항인 modifier 을 사용하여 key 클릭을 시뮬레이션합니다. delay 이 0보다 크면 테스트는 키를 클릭하기 전에 delay 밀리초 동안 기다립니다.

예시:

QWidget myWindow;
QTest::keyClick(&myWindow, Qt::Key_Tab);

위의 예는 키보드 수정자 없이 테스트 지연 없이 myWindow 에서 a 클릭을 시뮬레이션합니다.

QTest::keyClicks()도 참조하세요 .

void QTest::keyClicks(QWidget *widget, const QString &sequence, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

widget 에서 sequence 키를 클릭하는 것을 시뮬레이션합니다. 선택적으로 키보드 modifier 와 각 키 클릭 전 테스트 시간 delay (밀리초 단위)를 지정할 수 있습니다.

예시:

QTest::keyClicks(myWidget, "hello world");

위의 예는 키보드 수정자없이 테스트 지연 없이 myWidget 에서 "헬로 월드"를 나타내는 일련의 키를 클릭하는 것을 시뮬레이션합니다.

QTest::keyClick()도 참조하세요 .

void QTest::keyEvent(QTest::KeyAction action, QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

주어진 key 과 연관된 action 과 함께 Qt 키 이벤트를 widget 로 보냅니다. 선택적으로, 이벤트를 보내기 전에 modifier 키보드와 delay (밀리초 단위)의 테스트를 지정할 수 있습니다.

void QTest::keyEvent(QTest::KeyAction action, QWidget *widget, char ascii, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

이것은 오버로드된 함수입니다.

지정된 키 ascii 와 연관된 action 를 사용하여 widget 로 Qt 키 이벤트를 보냅니다. 선택적으로, 이벤트를 보내기 전에 delay (밀리초 단위)의 테스트와 함께 modifier 키보드를 지정할 수 있습니다.

void QTest::keyEvent(QTest::KeyAction action, QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

이것은 오버로드된 함수입니다.

주어진 key 과 연관된 action 과 함께 Qt 키 이벤트를 window 로 보냅니다. 선택적으로, 이벤트를 보내기 전에 delay (밀리초 단위)의 테스트와 함께 modifier 키보드를 지정할 수 있습니다.

void QTest::keyEvent(QTest::KeyAction action, QWindow *window, char ascii, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

이것은 오버로드된 함수입니다.

지정된 키 ascii 와 연결된 action 를 사용하여 Qt 키 이벤트를 window 로 보냅니다. 선택적으로, 이벤트를 보내기 전에 delay (밀리초 단위)의 테스트와 함께 modifier 키보드를 지정할 수 있습니다.

void QTest::keyPress(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

widget 에서 선택 사항인 modifier 을 사용하여 key 을 누르는 것을 시뮬레이션합니다. delay 이 0보다 크면 테스트는 키를 누르기 전에 delay 밀리초 동안 기다립니다.

참고: 어느 시점에서 keyRelease()를 사용하여 키를 놓아야 합니다.

QTest::keyRelease() 및 QTest::keyClick()도 참조하세요 .

void QTest::keyPress(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

이 함수는 오버로드된 함수입니다.

widget 에서 선택 사항인 modifier 을 사용하여 key 을 누르는 것을 시뮬레이션합니다. delay 이 0보다 크면 테스트는 키를 누르기 전에 delay 밀리초 동안 기다립니다.

참고: 어느 시점에서 keyRelease()를 사용하여 키를 놓아야 합니다.

QTest::keyRelease() 및 QTest::keyClick()도 참조하세요 .

void QTest::keyPress(QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

이 함수는 오버로드된 함수입니다.

window 에서 선택 사항인 modifier 을 사용하여 key 을 누르는 것을 시뮬레이션합니다. delay 이 0보다 크면 테스트는 키를 누르기 전에 delay 밀리초 동안 기다립니다.

참고: 어느 시점에서 keyRelease()를 사용하여 키를 놓아야 합니다.

QTest::keyRelease() 및 QTest::keyClick()도 참조하세요 .

void QTest::keyPress(QWindow *window, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

이 함수는 오버로드된 함수입니다.

window 에서 선택 사항인 modifier 을 사용하여 key 을 누르는 것을 시뮬레이션합니다. delay 이 0보다 크면 테스트는 키를 누르기 전에 delay 밀리초 동안 기다립니다.

참고: 어느 시점에서 keyRelease()를 사용하여 키를 놓아야 합니다.

QTest::keyRelease() 및 QTest::keyClick()도 참조하세요 .

void QTest::keyRelease(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

widget 에서 선택 사항인 modifier 을 사용하여 key 을 릴리스하는 것을 시뮬레이션합니다. delay 이 0보다 크면 테스트는 키를 릴리스하기 전에 delay 밀리초 동안 기다립니다.

QTest::keyPress() 및 QTest::keyClick()도 참조하세요 .

void QTest::keyRelease(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

이 함수는 오버로드된 함수입니다.

widget 에서 선택 사항인 modifier 을 사용하여 key 을 릴리스하는 것을 시뮬레이션합니다. delay 이 0보다 크면 테스트는 delay 밀리초 동안 기다렸다가 키를 릴리스합니다.

QTest::keyClick()도 참조하세요 .

void QTest::keyRelease(QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

이 함수는 오버로드된 함수입니다.

window 에서 선택 사항인 modifier 을 사용하여 key 을 릴리스하는 것을 시뮬레이션합니다. delay 이 0보다 크면 테스트는 delay 밀리초 동안 기다렸다가 키를 릴리스합니다.

QTest::keyPress() 및 QTest::keyClick()도 참조하세요 .

void QTest::keyRelease(QWindow *window, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)

이 함수는 오버로드된 함수입니다.

window 에서 선택 사항인 modifier 을 사용하여 key 을 릴리스하는 것을 시뮬레이션합니다. delay 이 0보다 크면 테스트는 delay 밀리초 동안 기다렸다가 키를 릴리스합니다.

QTest::keyClick()도 참조하세요 .

void QTest::keySequence(QWidget *widget, const QKeySequence &keySequence)

이 함수는 오버로드된 함수입니다.

widgetkeySequence 를 입력하는 것을 시뮬레이션합니다.

QTest::keyClick() 및 QTest::keyClicks()도 참조하세요 .

void QTest::keySequence(QWindow *window, const QKeySequence &keySequence)

이 함수는 오버로드된 함수입니다.

windowkeySequence 를 입력하는 것을 시뮬레이션합니다.

QTest::keyClick() 및 QTest::keyClicks()도 참조하세요 .

void QTest::mouseClick(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)

widget 에서 선택 사항인 modifier 을 사용하여 마우스 button 를 클릭하는 것을 시뮬레이션합니다. 클릭 위치는 pos 으로 정의되며 기본 위치는 위젯의 중앙입니다. delay 을 지정하면 테스트는 버튼을 누르기 전과 버튼을 놓기 전에 지정된 시간(밀리초) 동안 대기합니다.

QTest::mousePress() 및 QTest::mouseRelease()도 참조하세요 .

void QTest::mouseClick(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)

이 함수는 오버로드된 함수입니다.

window 에서 선택적 stateKey 수정자를 사용하여 마우스 button 를 클릭하는 것을 시뮬레이션합니다. 클릭 위치는 pos 으로 정의되며 기본 위치는 창 중앙입니다. delay 을 지정하면 테스트는 버튼을 누르기 전과 버튼을 놓기 전에 지정된 시간(밀리초) 동안 기다립니다.

QTest::mousePress() 및 QTest::mouseRelease()도 참조하세요 .

void QTest::mouseDClick(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)

widget 에서 선택 사항인 modifier 을 사용하여 마우스 button 를 두 번 클릭하는 것을 시뮬레이션합니다. 클릭 위치는 pos 으로 정의되며, 기본 위치는 위젯의 중앙입니다. delay 을 지정하면 테스트는 누르고 놓을 때마다 지정된 시간(밀리초) 동안 기다립니다.

QTest::mouseClick()도 참조하세요 .

void QTest::mouseDClick(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)

이 함수는 오버로드된 함수입니다.

window 에서 선택적 stateKey 수정자를 사용하여 마우스 button 를 두 번 클릭하는 것을 시뮬레이션합니다. 클릭 위치는 pos 으로 정의되며 기본 위치는 창 중앙입니다. delay 을 지정하면 테스트는 누르고 놓을 때마다 지정된 시간(밀리초) 동안 기다립니다.

QTest::mouseClick()도 참조하세요 .

void QTest::mouseMove(QWidget *widget, QPoint pos = QPoint(), int delay = -1)

마우스 포인터를 widget 로 이동합니다. pos 을 지정하지 않으면 마우스 포인터가 위젯의 중앙으로 이동합니다. delay (밀리초 단위)를 지정하면 마우스 포인터를 이동하기 전에 테스트가 대기합니다.

void QTest::mouseMove(QWindow *window, QPoint pos = QPoint(), int delay = -1)

이 기능은 오버로드된 기능입니다.

마우스 포인터를 window 로 이동합니다. pos 을 지정하지 않으면 마우스 포인터가 창 중앙으로 이동합니다. delay (밀리초 단위)를 지정하면 마우스 포인터를 이동하기 전에 테스트가 대기합니다.

void QTest::mousePress(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)

widget 에서 선택 사항인 modifier 을 사용하여 마우스 button 를 누르는 것을 시뮬레이션합니다. 위치는 pos 으로 정의되며, 기본 위치는 위젯의 중앙입니다. delay 을 지정하면 테스트는 지정된 시간(밀리초) 동안 기다린 후 누릅니다.

QTest::mouseRelease() 및 QTest::mouseClick()도 참조하세요 .

void QTest::mousePress(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)

이 함수는 오버로드된 함수입니다.

window 에서 선택적 stateKey 수정자를 사용하여 마우스 button 를 누르는 것을 시뮬레이션합니다. 위치는 pos 으로 정의되며 기본 위치는 창 중앙입니다. delay 을 지정하면 테스트는 지정된 시간(밀리초) 동안 기다린 후 누릅니다.

QTest::mouseRelease() 및 QTest::mouseClick()도 참조하세요 .

void QTest::mouseRelease(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)

widget 에서 선택 사항인 modifier 을 사용하여 마우스 button 를 놓는 것을 시뮬레이션합니다. 놓는 위치는 pos 으로 정의되며, 기본 위치는 위젯의 중앙입니다. delay 을 지정하면 테스트는 버튼을 놓기 전에 지정된 시간(밀리초) 동안 대기하고, 그렇지 않으면 명령줄 인수를 통해 재정의할 수 있는 기본 시간(1ms) 동안 대기합니다.

참고: 이벤트를 개별적으로 전송하여 더블 클릭을 테스트하려면 두 마우스 릴리스 이벤트 모두에 기본값보다 더 짧은 지연 시간을 지정하세요. 누르기, 놓기, 누르기 및 놓기의 지연 총합은 QStyleHints::mouseDoubleClickInterval()보다 작아야 합니다. 그러나 이벤트 간에 상태를 확인할 필요가 없는 경우에는 QTest::mouseDClick()를 사용하는 것이 좋습니다.

QSignalSpy doubleClickSpy(target, &TargetClass::doubleClicked);
const QPoint p(1, 2);
QTest::mousePress(&myWindow, Qt::LeftButton, Qt::NoModifier, p);
QVERIFY(target.isPressed());
QTest::mouseRelease(&myWindow, Qt::LeftButton, Qt::NoModifier, p, 10);
QCOMPARE(target.isPressed(), false);
QTest::mousePress(&myWindow, Qt::LeftButton, Qt::NoModifier, p, 10);
QCOMPARE(target.pressCount(), 2);
QTest::mouseRelease(&myWindow, Qt::LeftButton, Qt::NoModifier, p, 10);
QCOMPARE(doubleClickSpy.count(), 1);

QTest::mousePress() 및 QTest::mouseClick()도 참조하세요 .

void QTest::mouseRelease(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)

이 함수는 오버로드된 함수입니다.

window 에서 선택적 stateKey 수정자를 사용하여 마우스 button 를 놓는 것을 시뮬레이션합니다. 놓는 위치는 pos 으로 정의되며, 기본 위치는 창 중앙입니다. delay 을 지정하면 테스트는 버튼을 놓기 전에 지정된 시간(밀리초) 동안 대기하고, 그렇지 않으면 명령줄 인수를 통해 재정의할 수 있는 기본 시간(1ms) 동안 대기합니다.

참고: 이벤트를 개별적으로 전송하여 더블 클릭을 테스트하려면 두 마우스 릴리스 이벤트 모두에 기본값보다 더 짧은 지연 시간을 지정하세요. 누르기, 놓기, 누르기 및 놓기의 지연 총합은 QStyleHints::mouseDoubleClickInterval()보다 작아야 합니다. 그러나 이벤트 간에 상태를 확인할 필요가 없는 경우에는 QTest::mouseDClick()를 사용하는 것이 좋습니다.

QSignalSpy doubleClickSpy(target, &TargetClass::doubleClicked);
const QPoint p(1, 2);
QTest::mousePress(&myWindow, Qt::LeftButton, Qt::NoModifier, p);
QVERIFY(target.isPressed());
QTest::mouseRelease(&myWindow, Qt::LeftButton, Qt::NoModifier, p, 10);
QCOMPARE(target.isPressed(), false);
QTest::mousePress(&myWindow, Qt::LeftButton, Qt::NoModifier, p, 10);
QCOMPARE(target.pressCount(), 2);
QTest::mouseRelease(&myWindow, Qt::LeftButton, Qt::NoModifier, p, 10);
QCOMPARE(doubleClickSpy.count(), 1);

QTest::mousePress() 및 QTest::mouseClick()도 참조하세요 .

QTestData &QTest::newRow(const char *dataTag)

현재 테스트 데이터에 새 행을 추가합니다.

테스트 출력은 dataTag 이라는 이름을 사용하여 이 테스트 데이터로 실행된 테스트를 식별합니다.

테이블의 각 열에 대해 하나의 값씩 데이터를 스트리밍하는 데 사용할 수 있는 QTestData 참조를 반환합니다.

예시:

void MyTestClass::addSingleStringRows()
{
    QTest::addColumn<QString>("aString");
    QTest::newRow("just.hello") << QString("hello");
    QTest::newRow("a.null.string") << QString();
}

참고: 이 함수는 테스트 프레임워크에서 호출되는 테스트의 데이터 함수의 일부로만 호출할 수 있습니다.

더 자세한 예는 데이터 기반 테스트를 참조하세요.

addRow(), addColumn() 및 QFETCH()도 참조하세요 .

int QTest::qExec(QObject *testObject, int argc = 0, char **argv = nullptr)

testObject 에 선언된 테스트를 실행합니다. 또한 비공개 슬롯 initTestCase(), cleanupTestCase(), init()cleanup() 이 있는 경우 실행됩니다. 자세한 내용은 테스트 만들기를 참조하세요.

선택적으로 명령줄 인수 argcargv 을 제공할 수 있습니다. 인식되는 인수 목록은 Qt Test 명령줄 인수를 참조하세요.

다음 예는 MyTestObject 의 모든 테스트를 실행합니다:

MyTestObject test1;
QTest::qExec(&test1);

이 함수는 테스트가 실패하지 않으면 0을 반환하고, 하나 이상의 테스트가 실패하거나 처리되지 않은 예외가 있는 경우 0 이외의 값을 반환합니다. (건너뛴 테스트는 반환 값에 영향을 미치지 않습니다.)

독립형 테스트 애플리케이션의 경우 편의 매크로 QTEST_MAIN()를 사용하여 명령줄 인수를 구문 분석하고 테스트를 실행하는 main() 함수를 선언할 수 있으므로 이 함수를 명시적으로 호출하지 않아도 됩니다.

이 함수의 반환 값은 QTEST_MAIN() 매크로를 사용할 때 테스트 애플리케이션의 종료 코드이기도 합니다.

독립형 테스트 애플리케이션의 경우 테스트 출력을 파일에 기록하고 개별 테스트 함수를 실행하는 명령줄 옵션이 올바르게 작동하지 않으므로 이 함수를 두 번 이상 호출해서는 안 됩니다.

참고: 이 함수는 재진입이 불가능하며 한 번에 하나의 테스트만 실행할 수 있습니다. qExec()으로 실행된 테스트는 qExec()을 통해 다른 테스트를 실행할 수 없으며 스레드가 동시에 qExec()을 호출하는 것은 허용되지 않습니다.

main() 의 인수에서 인수를 가져오는 대신 프로그래밍 방식으로 인수를 생성한 경우, 유니코드에 안전하므로 QTest::qExec(QObject *, const QStringList &)을 사용하는 것이 좋습니다.

QTEST_MAIN(), QTEST_GUILESS_MAIN() 및 QTEST_APPLESS_MAIN()도 참조하세요 .

int QTest::qExec(QObject *testObject, const QStringList &arguments)

이 함수는 오버로드된 함수입니다.

qExec(QObject *, int, char**)과 동일하게 동작하지만 char** 목록 대신 argumentsQStringList 을 받습니다.

QSharedPointer<QTemporaryDir> QTest::qExtractTestData(const QString &dirName)

리소스에서 디스크로 디렉터리를 추출합니다. 콘텐츠는 임시 폴더로 재귀적으로 추출됩니다. 반환 값에 대한 마지막 참조가 범위를 벗어나면 추출된 콘텐츠는 자동으로 제거됩니다.

dirName 는 리소스에서 추출할 디렉터리의 이름입니다.

데이터가 추출된 임시 디렉터리를 반환하거나 오류가 있는 경우 null을 반환합니다.

[since 6.5] void QTest::qRegisterTestCase(const QString &name, QTest::TestEntryFunction entryFunction)

현재 바이너리에 대한 중앙 테스트 케이스 레지스트리에 입력 함수 entryFunction 를 사용하여 테스트 name 를 등록합니다.

일괄 테스트 바이너리를 매개 변수 없이 실행하면 name 이 나열됩니다. name 의 argv[1]로 테스트 바이너리를 실행하면 entryFunction 이 호출됩니다.

이 함수는 Qt 6.5에 도입되었습니다.

[since 6.7] void QTest::qSleep(std::chrono::milliseconds msecs)

잠자기 msecs, 테스트 실행을 차단합니다.

이 메서드는 이벤트 처리를 수행하지 않으며 테스트가 응답하지 않게 됩니다. 절전 모드 중에 네트워크 통신이 시간 초과될 수 있습니다. 비차단 절전을 수행하려면 QTest::qWait()를 사용하십시오.

msecs 는 0ms보다 커야 합니다.

참고: Qt 6.7부터 이 함수는 std::this_thread::sleep_for 를 사용하여 구현되므로 표준 라이브러리 구현에 따라 소요 시간의 정확도가 달라집니다. Qt 6.7 이전에는 이 함수가 Unix에서 nanosleep() 또는 Windows에서 Sleep() 을 호출했기 때문에 이 함수에 소요되는 시간의 정확도는 운영 체제에 따라 달라졌습니다.

예제:

using namespace std::chrono_literals;
QTest::qSleep(250ms);

이 함수는 Qt 6.7에 도입되었습니다.

QTest::qWait()도 참조하십시오 .

void QTest::qSleep(int ms)

이 함수는 과부하된 함수입니다.

ms 밀리초 동안 잠자기 상태로 테스트 실행을 차단합니다.

호출과 동일합니다:

QTest::qSleep(std::chrono::milliseconds{ms});

[since 6.7] void QTest::qWait(std::chrono::milliseconds msecs)

msecs 을 기다립니다. 대기하는 동안 이벤트가 처리되고 테스트는 사용자 인터페이스 이벤트 또는 네트워크 통신에 계속 반응합니다.

예시:

    using namespace std::chrono_literals;
    int i = 0;
    while (myNetworkServerNotResponding() && i++ < 50)
        QTest::qWait(250ms);

위의 코드는 네트워크 서버가 응답할 때까지 최대 약 12.5초 동안 대기합니다.

이 기능은 Qt 6.7에 도입되었습니다.

QTest::qSleep() 및 QSignalSpy::wait()도 참조하세요 .

void QTest::qWait(int msecs)

과부하가 걸린 함수입니다.

msecs 을 기다립니다. 호출과 동일합니다:

QTest::qWait(std::chrono::milliseconds{msecs});

[since 6.7] template <typename Functor> bool QTest::qWaitFor(Functor predicate, QDeadlineTimer deadline = QDeadlineTimer(std::chrono::seconds{5}))

deadline 이 만료될 때까지 또는 predicate 이 참을 반환할 때까지 기다립니다.

predicate 이 어느 시점에서든 참을 반환하면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

예시:

    MyObject obj;
    obj.startup();
    using namespace std::chrono_literals;
    const bool result = QTest::qWaitFor([&obj]() { return obj.isReady(); },
                                        QDeadlineTimer(3s));

위의 코드는 객체가 준비될 때까지 최대 3초 동안 기다립니다.

이 함수는 Qt 6.7에 도입되었습니다.

template <typename Functor> bool QTest::qWaitFor(Functor predicate, int timeout)

이 함수는 오버로드된 함수입니다.

timeout 밀리초 동안 또는 predicate 이 참으로 반환될 때까지 기다립니다.

이는 호출과 동일합니다:

qWaitFor(predicate, QDeadlineTimer(timeout));

bool QTest::qWaitForWindowActive(QWidget *widget, int timeout = 5000)

widgettimeout 밀리초 이내에 활성화되면 true 을 반환합니다. 그렇지 않으면 false 을 반환합니다.

이 메서드는 QWidget::show()를 호출하고 진행하기 전에 위젯이 실제로 활성화되어 있는지(즉, 표시되고 포커스가 있는지) 확인하는 테스트에 유용합니다.

참고: 다른 창으로 인해 widget 이 활성화되지 않으면 이 메서드는 시간 초과되어 false 을 반환합니다.

참고: 포커스는 독점적인 속성이므로 메서드가 true 을 반환한 후에도 widget 은 언제든지 다른 창으로 포커스를 잃을 수 있습니다.

qWaitForWindowExposed() 및 QWidget::isActiveWindow()도 참조하세요 .

bool QTest::qWaitForWindowActive(QWindow *window, int timeout = 5000)

windowtimeout 밀리초 이내에 활성화된 경우 true 을 반환합니다. 그렇지 않으면 false 을 반환합니다.

이 메서드는 QWindow::show()를 호출하고 계속 진행하기 전에 창이 실제로 활성화되어 있는지(즉, 표시되고 포커스가 있는지)를 확인하는 테스트에 유용합니다.

참고: 다른 창으로 인해 window 이 활성화되지 않으면 이 메서드는 시간 초과되어 false 을 반환합니다.

참고: 포커스는 독점적인 속성이므로 메서드가 true 을 반환한 후에도 window 은 언제든지 다른 창으로 포커스를 잃을 수 있습니다.

qWaitForWindowExposed(), qWaitForWindowFocused() 및 QWindow::isActive()도 참조하세요 .

bool QTest::qWaitForWindowExposed(QWidget *widget, int timeout = 5000)

widgettimeout 밀리초 이내에 노출되면 true 을 반환합니다. 그렇지 않으면 false 을 반환합니다.

이 메서드는 QWidget::show()를 호출하고 계속 진행하기 전에 위젯이 실제로 표시되는지에 의존하는 테스트에 유용합니다.

참고: 화면에 매핑된 창이 다른 창에 완전히 가려져 있는 등 창 클라이언트 영역이 보이지 않는 경우에도 노출된 것으로 간주되지 않을 수 있습니다. 이러한 경우 메서드는 시간 초과 후 false 을 반환합니다.

qWaitForWindowActive(), QWidget::isVisible() 및 QWindow::isExposed()도 참조하세요 .

bool QTest::qWaitForWindowExposed(QWindow *window, int timeout = 5000)

windowtimeout 밀리초 이내에 노출되면 true 을 반환합니다. 그렇지 않으면 false 을 반환합니다.

이 메서드는 QWindow::show()를 호출하고 계속 진행하기 전에 창이 실제로 표시되는지에 의존하는 테스트에 유용합니다.

참고: 화면에 매핑된 창이 다른 창에 완전히 가려지는 등의 이유로 창 클라이언트 영역이 보이지 않는 경우에도 노출된 것으로 간주되지 않을 수 있습니다. 이러한 경우 메서드는 시간 초과 후 false 을 반환합니다.

qWaitForWindowActive() 및 QWindow::isExposed()도 참조하세요 .

[since 6.7] bool QTest::qWaitForWindowFocused(QWidget *widget, QDeadlineTimer timeout = std::chrono::seconds{5})

widgettimeout 내의 포커스 창인 경우 true 을 반환합니다. 그렇지 않으면 false 을 반환합니다.

이 메서드는 QWidget::show()를 호출하고 계속 진행하기 전에 포커스가 있는 위젯(예: 키보드 이벤트 수신)에 의존하는 테스트에 유용합니다.

참고: 다른 창이 widget 포커스를 방해하는 경우 이 메서드는 시간 초과되어 false 을 반환합니다.

참고: 포커스는 독점적인 속성이므로 메서드가 true 을 반환한 후에도 widget 은 언제든지 다른 창으로 포커스를 잃을 수 있습니다.

이 함수는 Qt 6.7에 도입되었습니다.

qWaitForWindowExposed(), qWaitForWindowActive() 및 QGuiApplication::focusWindow()도 참조하십시오 .

[since 6.7] bool QTest::qWaitForWindowFocused(QWindow *window, QDeadlineTimer timeout = std::chrono::seconds{5})

windowtimeout 내의 포커스 창인 경우 true 을 반환합니다. 그렇지 않으면 false 을 반환합니다.

이 메서드는 QWindow::show()를 호출하고 계속 진행하기 전에 포커스가 있는 창(예: 키보드 이벤트 수신 등)에 의존하는 테스트에 유용합니다.

참고: 다른 창이 window 포커스를 방해하는 경우 이 메서드는 시간 초과되고 false 을 반환합니다.

참고: 포커스는 배타적 속성이므로 메서드가 true 을 반환한 후에도 window 은 언제든지 포커스를 다른 창으로 잃을 수 있습니다.

이 함수는 Qt 6.7에 도입되었습니다.

qWaitForWindowExposed(), qWaitForWindowActive() 및 QGuiApplication::focusWindow()도 참조하십시오 .

void QTest::setBenchmarkResult(qreal result, QTest::QBenchmarkMetric metric)

이 테스트 함수에 대한 벤치마크 결과를 result 로 설정합니다.

QBENCHMARK 매크로를 사용하지 않고 벤치마크 결과를 보고하려면 이 함수를 사용합니다. metric 을 사용하여 Qt Test 이 결과를 해석하는 방법을 지정합니다.

결과의 컨텍스트는 테스트 함수 이름과 _data 함수의 데이터 태그입니다. 이 함수는 각 테스트 함수에서 한 번만 호출할 수 있으며, 이후 호출은 이전에 보고된 결과를 대체합니다.

반복 명령줄 인수는 QBENCHMARK 매크로가 없는 테스트 함수에는 영향을 미치지 않습니다.

[noexcept, since 6.8] void QTest::setThrowOnFail(bool enable)

QCOMPARE()/QVERIFY() 실패 시 (바로 주변 함수 컨텍스트에서 반환하는 것과는 반대로) 활성화(enable = true)하거나 비활성화( enable = false)합니다.

이 기능은 참조 카운트됩니다: true 로 이 함수를 N 번 호출하면 falseN 번 호출해야 시작한 위치로 돌아갈 수 있습니다.

기본값은 QTEST_THROW_ON_FAIL 환경 변수가 설정되어 있지 않은 경우 false 입니다.

QTEST_THROW_ON_FAIL C++ 매크로가 정의된 경우에는 이 호출이 적용되지 않습니다.

참고: 이 기능을 사용하려면 예외를 활성화한 상태로 테스트를 컴파일해야 합니다.

이 함수는 Qt 6.8에 도입되었습니다.

setThrowOnSkip(), ThrowOnFailEnabler, ThrowOnFailDisabler, QTEST_THROW_ON_FAIL참조하세요 .

[noexcept, since 6.8] void QTest::setThrowOnSkip(bool enable)

활성화(enable = true)하거나 비활성화( enable = false)하여 QSKIP()에 던집니다(바로 주변 함수 컨텍스트에서 반환하는 것과는 반대로).

이 기능은 참조 카운트됩니다: true 로 이 함수를 N 번 호출하면 falseN 번 호출해야 시작한 위치로 돌아갈 수 있습니다.

기본값은 QTEST_THROW_ON_SKIP 환경 변수가 설정되어 있지 않은 경우 false 입니다.

QTEST_THROW_ON_SKIP C++ 매크로가 정의된 경우에는 이 호출이 적용되지 않습니다.

참고: 이 기능을 사용하려면 예외를 활성화한 상태로 테스트를 컴파일해야 합니다.

이 함수는 Qt 6.8에 도입되었습니다.

setThrowOnFail(), ThrowOnSkipEnabler, ThrowOnSkipDisabler, QTEST_THROW_ON_SKIP참조하세요 .

char *QTest::toHexRepresentation(const char *ba, qsizetype length)

공백으로 구분된 16진수 문자열 시퀀스로 표현되는 ba 문자열에 대한 포인터를 반환합니다. 입력이 너무 길다고 판단되면 잘립니다. 반환된 문자열에는 끝에 줄임표가 표시됩니다. 호출자는 반환된 포인터의 소유권을 가지며 나중에 삭제[] 연산자에게 전달되도록 해야 합니다.

length 는 문자열의 길이입니다 ba.

char *toString(QSizePolicy sp)

이 함수는 오버로드된 함수입니다.

크기 정책의 텍스트 표현을 반환합니다 sp.

template <typename T> char *QTest::toString(const T &value)

value 의 텍스트 표현을 반환합니다. 이 함수는 QCOMPARE()에서 테스트 실패 시 자세한 정보를 출력하는 데 사용됩니다.

이 함수의 특수화 또는 오버로드를 테스트에 추가하여 자세한 정보 출력을 활성화할 수 있습니다.

참고: Qt 5.5부터는 이 템플릿을 특수화하는 대신 타입의 네임스페이스에 toString() 함수를 제공하는 것이 좋습니다. 코드가 Qt 5.4 이하의 QTestLib에서 계속 작동해야 하는 경우, 계속 특수화를 사용해야 합니다.

참고: toString() 호출자는 delete[] 를 사용하여 반환된 데이터를 삭제해야 합니다. 구현은 new[] 또는 qstrdup()로 생성된 문자열을 반환해야 합니다. 가장 쉬운 방법은 QByteArray 또는 QString 을 만든 다음 QTest::toString()을 호출하는 것입니다(아래 두 번째 예 참조).

전문화 예제(Qt ≤ 5.4):

namespace QTest {
    template<>
    char *toString(const MyPoint &point)
    {
        const QByteArray ba("MyPoint("
                            + QByteArray::number(point.x()) + ", "
                            + QByteArray::number(point.y()) + ')');
        return qstrdup(ba.data());
    }
}

위의 예는 MyPoint 라는 클래스에 대한 toString() 특수화를 정의합니다. MyPoint 의 두 인스턴스 비교가 실패할 때마다 QCOMPARE()는 이 함수를 호출하여 MyPoint 의 내용을 테스트 로그에 출력합니다.

동일한 예제이지만 오버로드를 사용합니다(Qt ≥ 5.5):

namespace {
    char *toString(const MyPoint &point)
    {
        return QTest::toString("MyPoint(" +
                               QByteArray::number(point.x()) + ", " +
                               QByteArray::number(point.y()) + ')');
    }
}

QCOMPARE()도 참조하세요 .

char *QTest::toString(const QVector4D &v)

이 함수는 오버로드된 함수입니다.

4D 벡터의 텍스트 표현을 반환합니다 v.

template <typename T1, typename T2> char *QTest::toString(const std::pair<T1, T2> &pair)

이 함수는 오버로드된 함수입니다.

pair 의 텍스트 표현을 반환합니다.

template <typename... Types> char *QTest::toString(const std::tuple<Types...> &tuple)

이 함수는 오버로드된 함수입니다.

주어진 tuple 의 텍스트 표현을 반환합니다.

char *QTest::toString(std::nullptr_t)

이 함수는 오버로드된 함수입니다.

nullptr 을 포함하는 문자열을 반환합니다.

char *toString(QSizePolicy::ControlType ct)

이 함수는 오버로드된 함수입니다.

제어 유형 ct 의 텍스트 표현을 반환합니다.

char *toString(QSizePolicy::ControlTypes cts)

이 함수는 오버로드된 함수입니다.

컨트롤 유형의 텍스트 표현을 반환합니다 cts.

char *toString(QSizePolicy::Policy p)

이 함수는 오버로드된 함수입니다.

정책의 텍스트 표현을 반환합니다 p.

char *QTest::toString(const QByteArray &ba)

이 함수는 오버로드된 함수입니다.

바이트 배열의 텍스트 표현을 반환합니다 ba.

QTest::toHexRepresentation()도 참조하세요 .

char *QTest::toString(const QCborError &c)

이 함수는 오버로드된 함수입니다.

주어진 CBOR 오류의 텍스트 표현을 반환합니다 c.

char *QTest::toString(const QChar &character)

이 함수는 오버로드된 함수입니다.

주어진 character 의 텍스트 표현을 반환합니다.

char *QTest::toString(const QDate &date)

이 함수는 오버로드된 함수입니다.

주어진 date 의 텍스트 표현을 반환합니다.

char *QTest::toString(const QDateTime &dateTime)

이 함수는 오버로드된 함수입니다.

dateTime 에 지정된 날짜와 시간의 텍스트 표현을 반환합니다.

[since 6.5] char *QTest::toString(const QKeySequence &ks)

이 함수는 오버로드된 함수입니다.

키 시퀀스의 텍스트 표현을 반환합니다 ks.

이 함수는 Qt 6.5에 도입되었습니다.

char *QTest::toString(const QLatin1StringView &string)

이 함수는 오버로드된 함수입니다.

주어진 string 의 텍스트 표현을 반환합니다.

char *QTest::toString(const QPoint &point)

이 함수는 오버로드된 함수입니다.

주어진 point 의 텍스트 표현을 반환합니다.

char *QTest::toString(const QPointF &point)

이 함수는 오버로드된 함수입니다.

주어진 point 의 텍스트 표현을 반환합니다.

char *QTest::toString(const QRect &rectangle)

이 함수는 오버로드된 함수입니다.

주어진 rectangle 의 텍스트 표현을 반환합니다.

char *QTest::toString(const QRectF &rectangle)

이 함수는 오버로드된 함수입니다.

주어진 rectangle 의 텍스트 표현을 반환합니다.

char *QTest::toString(const QSize &size)

이 함수는 오버로드된 함수입니다.

주어진 size 의 텍스트 표현을 반환합니다.

char *QTest::toString(const QSizeF &size)

이 함수는 오버로드된 함수입니다.

주어진 size 의 텍스트 표현을 반환합니다.

char *QTest::toString(const QString &string)

이 함수는 오버로드된 함수입니다.

주어진 string 의 텍스트 표현을 반환합니다.

char *QTest::toString(const QStringView &string)

이 함수는 오버로드된 함수입니다.

주어진 string 의 텍스트 표현을 반환합니다.

char *QTest::toString(const QTime &time)

이 함수는 오버로드된 함수입니다.

주어진 time 의 텍스트 표현을 반환합니다.

char *QTest::toString(const QUrl &url)

이 함수는 오버로드된 함수입니다.

주어진 url 의 텍스트 표현을 반환합니다.

char *QTest::toString(const QUuid &uuid)

이 함수는 오버로드된 함수입니다.

주어진 uuid 의 텍스트 표현을 반환합니다.

char *QTest::toString(const QVariant &variant)

이 함수는 오버로드된 함수입니다.

주어진 variant 의 텍스트 표현을 반환합니다.

char *QTest::toString(const QVector2D &v)

이 함수는 오버로드된 함수입니다.

2D 벡터의 텍스트 표현을 반환합니다 v.

char *QTest::toString(const QVector3D &v)

이 함수는 오버로드된 함수입니다.

3D 벡터의 텍스트 표현을 반환합니다 v.

QTest::QTouchEventWidgetSequence QTest::touchEvent(QWidget *widget, QPointingDevice *device, bool autoCommit = true)

device 에 대한 이벤트를 시뮬레이션하기 위해 widget 에 대한 QTouchEventSequence 을 생성하고 반환합니다.

시퀀스에 터치 이벤트를 추가할 때, press(), move() 등의 각 호출에서 다른 위젯이 제공되지 않는 한 widget 는 제공된 위치를 화면 좌표로 변환하는 데에도 사용됩니다.

터치 이벤트는 autoCommit 이 false로 설정되지 않는 한 QTouchEventSequence 의 소멸자가 호출될 때(즉, 반환된 객체의 범위가 초과될 때) 이벤트 시스템에 커밋됩니다. autoCommit 이 거짓이면 commit()을 수동으로 호출해야 합니다.

createTouchDevice()를 호출하여 이 함수와 함께 사용할 테스트 터치 디바이스를 만들 수 있습니다.

QTest::QTouchEventSequence QTest::touchEvent(QWindow *window, QPointingDevice *device, bool autoCommit = true)

device 에 대한 이벤트를 시뮬레이션하기 위해 window 에 대한 QTouchEventSequence 을 생성하고 반환합니다.

시퀀스에 터치 이벤트를 추가할 때, window 는 press(), move() 등의 호출에서 다른 창이 제공되지 않는 한 제공된 위치를 화면 좌표로 변환하는 데에도 사용됩니다.

터치 이벤트는 autoCommit 이 거짓으로 설정되지 않는 한 QTouchEventSequence 의 소멸자가 호출될 때(즉, 반환된 객체의 범위가 초과될 때) 이벤트 시스템에 커밋됩니다. autoCommit 이 false인 경우 commit()을 수동으로 호출해야 합니다.

createTouchDevice()를 호출하여 이 함수와 함께 사용할 테스트 터치 디바이스를 만들 수 있습니다.

[since 6.8] void QTest::wheelEvent(QWindow *window, QPointF pos, QPoint angleDelta, QPoint pixelDelta = QPoint(0, 0), Qt::KeyboardModifiers stateKey = Qt::NoModifier, Qt::ScrollPhase phase = Qt::NoScrollPhase)

로컬 창 좌표의 pos 위치에서 window 내의 휠 이벤트를 시뮬레이션합니다. angleDelta 휠 회전 각도를 포함합니다. 양수 값은 전진 회전을, 음수 값은 후진을 의미합니다. pixelDelta 에는 화면의 스크롤 거리(픽셀)가 포함됩니다. 이 값은 null일 수 있습니다. 이벤트 발생 시 키보드 상태는 stateKey 에 의해 지정됩니다. 이벤트의 스크롤 단계는 phase 에 의해 지정됩니다.

이 함수는 Qt 6.8에 도입되었습니다.

매크로 문서

QBENCHMARK

이 매크로는 테스트 내 코드의 성능을 측정하는 데 사용됩니다. 벤치마킹할 코드는 이 매크로 뒤에 오는 코드 블록에 포함되어 있습니다.

예를 들어:

void TestBenchmark::simple()
{
    QString str1 = u"This is a test string"_s;
    QString str2 = u"This is a test string"_s;
    QCOMPARE(str1.localeAwareCompare(str2), 0);
    QBENCHMARK {
        str1.localeAwareCompare(str2);
    }
}

벤치마크 만들기벤치마크 작성도참조하세요 .

QBENCHMARK_ONCE

QBENCHMARK_ONCE 매크로는 코드 블록을 한 번 실행하여 성능을 측정하기 위한 매크로입니다.

이 매크로는 테스트 내 코드의 성능을 측정하는 데 사용됩니다. 벤치마킹할 코드는 이 매크로 뒤에 오는 코드 블록 내에 포함되어 있습니다.

QBENCHMARK와 달리 포함된 코드 블록의 내용은 한 번만 실행됩니다. 경과 시간이 너무 짧아서 선택한 백엔드에서 측정할 수 없는 경우 경과 시간은 "0"으로 보고됩니다.

벤치마크 만들기벤치마크 작성도참조하세요 .

QCOMPARE(actual, expected)

QCOMPARE() 매크로는 등호 연산자를 사용하여 actual 값과 expected 값을 비교합니다. actualexpected 이 일치하면 실행이 계속됩니다. 그렇지 않으면 테스트 로그에 실패가 기록되고 테스트 함수는 이후 확인을 시도하지 않고 반환됩니다.

항상 QCOMPARE() 매개변수 시맨틱을 준수하세요. 전달되는 첫 번째 매개변수는 항상 테스트 대상 코드에서 생성된 실제 값이어야 하고, 두 번째 매개변수는 항상 예상 값이어야 합니다. 값이 일치하지 않으면 QCOMPARE()는 실제예상 레이블과 함께 값을 인쇄합니다. 매개변수 순서가 바뀌면 실패한 테스트를 디버깅할 때 혼란스러울 수 있으며 0을 예상하는 테스트는 반올림 오류로 인해 실패할 수 있습니다.

비교가 실패한 경우 QCOMPARE()는 값의 내용을 출력하려고 시도하므로 테스트 로그에서 비교가 실패한 이유를 확인할 수 있습니다.

예시:

QCOMPARE(QString("hello").toUpper(), QString("HELLO"));

부동 소수점 유형(float, double, qfloat16)을 비교할 때 유한 값에는 qFuzzyCompare()이 사용됩니다. qFuzzyIsNull ()가 두 값 모두에 참이면 동일한 값으로 간주됩니다. 부호가 같은 경우 무한대는 일치하며, 실제 값으로서의 NaN은 예상 값으로서의 NaN과 일치합니다(NaN != NaN일지라도 동일하더라도).

QList 을 비교할 때 값 유형의 배열과 이니셜라이저 목록을 예상 값으로 전달할 수 있습니다:

    const int expected[] = {8, 10, 12, 16, 20, 24};
    QCOMPARE(QFontDatabase::standardSizes(), expected);

이니셜라이저 목록을 사용하려면 전처리기가 쉼표를 매크로 인수 구분 기호로 해석하지 못하도록 헬퍼 매크로를 정의해야 합니다:

 #define ARG(...) __VA_ARGS__
     QCOMPARE(QFontDatabase::standardSizes(), ARG({8, 10, 12, 16, 20, 24}));
 #undef ARG

참고: 이 매크로는 테스트 프레임워크에서 호출되는 테스트 함수에서만 사용할 수 있습니다.

자체 클래스의 경우 QTest::toString()를 오버로드하여 테스트 로그에 출력할 값의 형식을 지정할 수 있습니다.

예시:

char *toString(const MyType &t)
{
    char *repr = new char[t.reprSize()];
    t.writeRepr(repr);
    return repr;
}

toString() 의 반환은 new char [] 이어야 합니다. 즉, 호출 코드가 완료되면 delete[] ( free() 또는 일반 delete 대신)로 릴리스되어야 합니다.

QVERIFY(), QTRY_COMPARE(), QTest::toString(), QEXPECT_FAIL(), QCOMPARE_EQ(), QCOMPARE_NE(), QCOMPARE_LT(), QCOMPARE_LE(), QCOMPARE_GT(), QCOMPARE_GE()도 참조하세요 .

[since 6.4] QCOMPARE_EQ(computed, baseline)

QCOMPARE_EQ() 매크로는 등호 연산자를 사용하여 computedbaseline 와 같은지 확인합니다. 같으면 실행이 계속됩니다. 그렇지 않으면 테스트 로그에 실패가 기록되고 테스트 함수는 이후 확인을 시도하지 않고 반환됩니다.

일반적으로 QVERIFY(computed == baseline); 호출과 유사하지만 실패 시 computedbaseline 인수 표현식 및 값을 보고하는 형식화된 오류 메시지를 출력합니다.

참고: 이 매크로는 테스트 프레임워크에서 호출하는 테스트 함수에서만 사용할 수 있습니다.

자체 클래스의 경우 QTest::toString()를 오버로드하여 테스트 로그에 출력할 값의 형식을 지정할 수 있습니다.

참고: QCOMPARE()와 달리 이 매크로는 사용자 정의 유형 및 포인터에 대한 오버로드를 제공하지 않습니다. 따라서 예를 들어 두 개의 const char * 값을 매개변수로 전달하면 포인터를 비교하는 반면 QCOMPARE()은 C 스타일 문자열을 비교합니다.

이 매크로는 Qt 6.4에 도입되었습니다.

QCOMPARE(), QCOMPARE_NE(), QCOMPARE_LT(), QCOMPARE_LE(), QCOMPARE_GT() 및 QCOMPARE_GE()도 참조하십시오 .

[since 6.4] QCOMPARE_GE(computed, baseline)

QCOMPARE_GE() 매크로는 보다 크거나 같음 연산자를 사용하여 computedbaseline 이상인지 확인합니다. 참이면 실행이 계속됩니다. 그렇지 않으면 테스트 로그에 실패가 기록되고 테스트 함수는 이후 확인을 시도하지 않고 반환됩니다.

일반적으로 QVERIFY(computed >= baseline); 호출과 유사하지만 실패 시 computedbaseline 인수 표현식 및 값을 보고하는 형식화된 오류 메시지를 출력합니다.

참고: 이 매크로는 테스트 프레임워크에서 호출하는 테스트 함수에서만 사용할 수 있습니다.

자체 클래스의 경우 QTest::toString()를 오버로드하여 테스트 로그에 출력할 값의 형식을 지정할 수 있습니다.

이 매크로는 Qt 6.4에 도입되었습니다.

QCOMPARE_EQ(), QCOMPARE_NE(), QCOMPARE_LT(), QCOMPARE_LE() 및 QCOMPARE_GT()도 참조하세요 .

[since 6.4] QCOMPARE_GT(computed, baseline)

QCOMPARE_GT() 매크로는 보다 큰 연산자를 사용하여 computedbaseline 보다 큰지 확인합니다. 참이면 실행이 계속됩니다. 그렇지 않으면 테스트 로그에 실패가 기록되고 테스트 함수는 이후 확인을 시도하지 않고 반환됩니다.

일반적으로 QVERIFY(computed > baseline); 호출과 유사하지만 실패 시 computedbaseline 인수 표현식과 값을 보고하는 형식화된 오류 메시지를 출력합니다.

참고: 이 매크로는 테스트 프레임워크에서 호출하는 테스트 함수에서만 사용할 수 있습니다.

자체 클래스의 경우 QTest::toString()를 오버로드하여 테스트 로그에 출력할 값의 형식을 지정할 수 있습니다.

이 매크로는 Qt 6.4에 도입되었습니다.

QCOMPARE_EQ(), QCOMPARE_NE(), QCOMPARE_LT(), QCOMPARE_LE() 및 QCOMPARE_GE()도 참조하세요 .

[since 6.4] QCOMPARE_LE(computed, baseline)

QCOMPARE_LE() 매크로는 보다 작거나 같음 연산자를 사용하여 computed 이 최대 baseline 인지 확인합니다. 참이면 실행이 계속됩니다. 그렇지 않으면 테스트 로그에 실패가 기록되고 테스트 함수는 이후 확인을 시도하지 않고 반환됩니다.

일반적으로 QVERIFY(computed <= baseline); 호출과 유사하지만 실패 시 computedbaseline 인수 표현식 및 값을 보고하는 형식화된 오류 메시지를 출력합니다.

참고: 이 매크로는 테스트 프레임워크에서 호출하는 테스트 함수에서만 사용할 수 있습니다.

자체 클래스의 경우 QTest::toString()를 오버로드하여 테스트 로그에 출력할 값의 형식을 지정할 수 있습니다.

이 매크로는 Qt 6.4에 도입되었습니다.

QCOMPARE_EQ(), QCOMPARE_NE(), QCOMPARE_LT(), QCOMPARE_GT() 및 QCOMPARE_GE()도 참조하세요 .

[since 6.4] QCOMPARE_LT(computed, baseline)

QCOMPARE_LT() 매크로는 보다 작음 연산자를 사용하여 computedbaseline 보다 작은지 확인합니다. 참이면 실행이 계속됩니다. 그렇지 않으면 테스트 로그에 실패가 기록되고 테스트 함수는 이후 확인을 시도하지 않고 반환됩니다.

일반적으로 QVERIFY(computed < baseline); 호출과 유사하지만 실패 시 computedbaseline 인수 표현식과 값을 보고하는 형식화된 오류 메시지를 출력합니다.

참고: 이 매크로는 테스트 프레임워크에서 호출하는 테스트 함수에서만 사용할 수 있습니다.

자체 클래스의 경우 QTest::toString()를 오버로드하여 테스트 로그에 출력할 값의 형식을 지정할 수 있습니다.

이 매크로는 Qt 6.4에 도입되었습니다.

QCOMPARE_EQ(), QCOMPARE_NE(), QCOMPARE_LE(), QCOMPARE_GT() 및 QCOMPARE_GE()도 참조하세요 .

[since 6.4] QCOMPARE_NE(computed, baseline)

QCOMPARE_NE() 매크로는 부등식 연산자를 사용하여 computedbaseline 과 같지 않은지 확인합니다. 일치하면 실행이 계속됩니다. 그렇지 않으면 테스트 로그에 실패가 기록되고 테스트 함수는 이후 확인을 시도하지 않고 반환됩니다.

일반적으로 QVERIFY(computed != baseline); 호출과 유사하지만 실패 시 computedbaseline 인수 표현식 및 값을 보고하는 형식화된 오류 메시지를 출력합니다.

참고: 이 매크로는 테스트 프레임워크에서 호출하는 테스트 함수에서만 사용할 수 있습니다.

자체 클래스의 경우 QTest::toString()를 오버로드하여 테스트 로그에 출력할 값의 형식을 지정할 수 있습니다.

이 매크로는 Qt 6.4에 도입되었습니다.

QCOMPARE_EQ(), QCOMPARE_LT(), QCOMPARE_LE(), QCOMPARE_GT() 및 QCOMPARE_GE()도 참조하세요 .

QEXPECT_FAIL(dataIndex, comment, mode)

다음 QCOMPARE() 또는 QVERIFY() 매크로는 예상 실패로 표시합니다. 테스트 로그에 실패를 추가하는 대신 예상 실패가 보고됩니다.

QVERIFY() 또는 QCOMPARE()가 예상 실패로 표시되었지만 대신 통과하면 테스트 로그에 예기치 않은 통과(XPASS)가 기록되고 테스트 실패로 계산됩니다.

dataIndex 매개변수는 테스트 데이터의 어느 항목에 대해 실패가 예상되는지를 설명합니다. 모든 항목에 대해 실패가 예상되거나 테스트 데이터가 존재하지 않는 경우 빈 문자열("")을 전달합니다.

comment 예상되는 실패에 대한 테스트 로그에 추가됩니다.

modeQTest::TestFailMode 이며 테스트를 계속 실행할지 여부를 설정합니다. mode 은 예상되는 테스트 실패 발생 여부에 관계없이 적용됩니다.

참고: 이 매크로는 테스트 프레임워크에 의해 호출되는 테스트 함수에서만 사용할 수 있습니다.

예제 1:

QEXPECT_FAIL("", "Will fix in the next release", Continue);
QCOMPARE(i, 42);
QCOMPARE(j, 43);

위의 예에서 i 변수가 42가 아닌 경우 예상 실패가 테스트 출력에 기록됩니다. i 변수가 42이면 예기치 않은 합격이 대신 기록됩니다. 예제의 두 번째 QCOMPARE() 문에는 QEXPECT_FAIL()이 영향을 미치지 않습니다.

예제 2:

QEXPECT_FAIL("data27", "Oh my, this is soooo broken", Abort);
QCOMPARE(i, 42);

위의 테스트 함수는 테스트 데이터 입력 data27 에 대해 계속 실행되지 않습니다( i 값에 관계없이 ).

QTest::TestFailMode, QVERIFY() 및 QCOMPARE()도 참조하세요 .

QFAIL(message)

이 매크로는 테스트 실패를 강제하는 데 사용할 수 있습니다. 테스트 실행이 중지되고 실패 message 가 테스트 로그에 추가됩니다.

참고: 이 매크로는 테스트 프레임워크에서 호출하는 테스트 함수에서만 사용할 수 있습니다.

예시:

if (sizeof(int) != 4)
    QFAIL("This test has not been ported to this platform yet.");

QFETCH(type, name)

가져오기 매크로는 스택에 type 유형으로 name 이라는 로컬 변수를 만듭니다. nametype 은 테스트의 데이터 테이블에서 열과 일치해야 합니다. 이 변수는 어설션되며 어설션이 실패하면 테스트가 중단됩니다.

테스트에 다음과 같은 데이터가 있다고 가정합니다:

void TestQString::toInt_data()
{
    QTest::addColumn<QString>("aString");
    QTest::addColumn<int>("expected");

    QTest::newRow("positive+value") << "42" << 42;
    QTest::newRow("negative-value") << "-42" << -42;
    QTest::newRow("zero") << "0" << 0;
}

테스트 데이터에는 aString 이라는 QStringexpected 이라는 정수라는 두 개의 요소가 있습니다. 실제 테스트에서 이 값을 가져오기 위해

void TestQString::toInt()
{
     QFETCH(QString, aString);
     QFETCH(int, expected);

     QCOMPARE(aString.toInt(), expected);
}

aStringexpected 는 현재 테스트 데이터로 초기화된 스택의 변수입니다.

참고: 이 매크로는 테스트 프레임워크에서 호출되는 테스트 함수에서만 사용할 수 있습니다. 테스트 함수에는 _data 함수가 있어야 합니다.

QFETCH_GLOBAL(type, name)

이 매크로는 글로벌 데이터 테이블의 행에서 type 유형으로 name 이라는 변수를 가져옵니다. nametype 은 글로벌 데이터 테이블의 열과 일치해야 합니다. 이 변수는 어설션되며 어설션이 실패하면 테스트가 중단됩니다.

테스트에 다음과 같은 데이터가 있다고 가정합니다:

void TestQLocale::initTestCase_data()
{
    QTest::addColumn<QLocale>("locale");
    QTest::newRow("C") << QLocale::c();
    QTest::newRow("UKish") << QLocale("en_GB");
    QTest::newRow("USAish") << QLocale(QLocale::English, QLocale::UnitedStates);
}

void TestQLocale::roundTripInt_data()
{
    QTest::addColumn<int>("number");
    QTest::newRow("zero") << 0;
    QTest::newRow("one") << 1;
    QTest::newRow("two") << 2;
    QTest::newRow("ten") << 10;
}

테스트의 자체 데이터는 행당 단일 숫자입니다. 이 경우 initTestCase_data() 은 행당 로캘도 제공합니다. 따라서 이 테스트는 후자의 로캘과 전자의 숫자의 모든 조합으로 실행됩니다. 따라서 글로벌 테이블에 4개의 행이 있고 로컬에 3개의 행이 있는 경우 테스트 함수는 12개의 개별 테스트 케이스(4 * 3 = 12)에 대해 실행됩니다.

void TestQLocale::roundTripInt()
{
    QFETCH_GLOBAL(QLocale, locale);
    QFETCH(int, number);
    bool ok;
    QCOMPARE(locale.toInt(locale.toString(number), &ok), number);
    QVERIFY(ok);
}

로캘은 QFETCH_GLOBAL()을 사용하여 글로벌 데이터 테이블에서 읽고, 번호는 QFETCH()를 사용하여 로컬 데이터 테이블에서 읽습니다.

참고: 이 매크로는 initTestCase_data() 메서드가 있는 클래스의 테스트 메서드에서만 사용할 수 있습니다.

QFINDTESTDATA(filename)

filename 에서 참조한 테스트 데이터 파일에 대해 QString 을 반환하거나, 테스트 데이터 파일을 찾을 수 없는 경우 빈 QString 을 반환합니다.

이 매크로를 사용하면 테스트에 절대 파일 이름을 하드코딩하거나 오류가 발생하기 쉬운 상대 경로를 사용하지 않고도 외부 파일에서 데이터를 로드할 수 있습니다.

반환되는 경로는 다음 목록에서 기존 파일 또는 디렉터리로 확인되는 첫 번째 경로가 됩니다:

지정된 파일/디렉토리가 이러한 위치 중 하나에 존재하지 않으면 테스트 로그에 경고가 인쇄됩니다.

예를 들어, 이 코드에서:

bool tst_MyXmlParser::parse()
{
    MyXmlParser parser;
    QString input = QFINDTESTDATA("testxml/simple1.xml");
    QVERIFY(parser.parse(input));
}

testdata 파일은 존재하는 첫 번째 파일로 확인됩니다:

  • /home/user/build/myxmlparser/tests/tst_myxmlparser/testxml/simple1.xml
  • /usr/local/Qt-5.0.0/tests/tst_myxmlparser/testxml/simple1.xml
  • /home/user/sources/myxmlparser/tests/tst_myxmlparser/testxml/simple1.xml

이렇게 하면 테스트가 설치되었는지 여부와 테스트의 빌드 트리가 테스트의 소스 트리와 동일한지 여부에 관계없이 테스트가 해당 테스트 데이터를 찾을 수 있습니다.

참고: 소스 디렉토리에서 테스트 데이터를 안정적으로 감지하려면 qmake를 사용하거나 컴파일러가 호출되는 작업 디렉터리를 가리키도록 QT_TESTCASE_BUILDDIR 매크로를 정의하거나 소스 파일의 절대 경로만 컴파일러에 전달해야 합니다. 그렇지 않으면 소스 디렉터리의 절대 경로를 확인할 수 없습니다.

참고: QT_TESTCASE_BUILDDIR 매크로는 CMake를 사용하고 QtTest 모듈이 대상에 링크되어 있는 경우에도 암시적으로 정의됩니다. 대상에서 QT_TESTCASE_BUILDDIR 속성을 설정하여 기본값 QT_TESTCASE_BUILDDIR 을 변경할 수 있습니다.

참고: QTEST_APPLESS_MAIN() 매크로를 사용하여 main() 함수를 생성하는 테스트의 경우 QFINDTESTDATAQCoreApplication::applicationDirPath()와 관련된 테스트 데이터를 찾으려고 시도하지 않습니다. 실제로 이는 QTEST_APPLESS_MAIN() 을 사용하는 테스트가 섀도 빌드 트리에서 실행될 경우 테스트 데이터를 찾지 못한다는 것을 의미합니다.

QSKIP(description)

테스트 함수에서 호출하면 QSKIP() 매크로는 테스트 로그에 실패를 추가하지 않고 테스트 실행을 중지합니다. 이 매크로를 사용하여 현재 구성에서 의미가 없는 테스트를 건너뛸 수 있습니다. 예를 들어 글꼴 렌더링 테스트에서 필요한 글꼴이 테스트 시스템에 설치되어 있지 않은 경우 QSKIP()를 호출할 수 있습니다.

테스트 로그에 description 텍스트가 추가되며 테스트가 실행될 수 없는 이유에 대한 설명이 포함되어야 합니다.

테스트가 데이터 기반인 경우 테스트 함수에서 QSKIP()를 호출할 때마다 테스트 데이터의 현재 행만 건너뛰므로 무조건 QSKIP()를 호출하면 테스트 데이터의 각 행에 대해 테스트 로그에 건너뛰기 메시지가 하나씩 생성됩니다.

_data 함수에서 호출된 경우, QSKIP() 매크로는 _data 함수의 실행을 중지하고 연결된 테스트 함수의 실행을 방지합니다. 이렇게 하면 데이터 기반 테스트가 완전히 생략됩니다. 개별 행을 생략하려면 테스트 함수에서 QSKIP() 대신 _data 함수에서 간단한 if (condition) newRow(...) << ... 을 사용하여 조건부로 만들면 됩니다.

initTestCase_data() 에서 호출되는 경우 QSKIP() 매크로는 모든 test 및 _data 함수를 건너뜁니다. initTestCase_data() 이 없거나 하나의 행만 설정할 때 initTestCase() 에서 호출되는 경우 QSKIP()도 마찬가지로 전체 테스트를 건너뜁니다. 그러나 initTestCase_data() 에 행이 두 개 이상 포함되어 있으면 initTestCase() 이 행당 한 번씩 호출(각 테스트와 마지막 마무리)됩니다. 따라서 initTestCase() 에서 QSKIP()를 호출하면 initTestCase_data() 에 의해 설정된 글로벌 데이터의 현재 행에 대한 모든 테스트 함수를 건너뛸 뿐입니다.

참고: 이 매크로는 테스트 프레임워크에서 호출되는 테스트 함수 또는 _data 함수에서만 사용할 수 있습니다.

예시:

if (!QSqlDatabase::drivers().contains("SQLITE"))
    QSKIP("This test requires the SQLITE database driver");
알려진 버그 건너뛰기

테스트에서 즉시 수정되지 않는 알려진 버그가 노출되는 경우 QEXPECT_FAIL() 매크로를 사용하여 실패를 문서화하고 알려진 문제에 대한 버그 추적 식별자를 참조하세요. 테스트가 실행되면 예상되는 실패는 테스트 출력에 XFAIL로 표시되며 테스트 프로그램의 반환 코드를 설정할 때 실패로 계산되지 않습니다. 예상한 실패가 발생하지 않으면 테스트 출력에 XPASS(예기치 않은 합격)가 보고되며 테스트 실패로 계산됩니다.

알려진 버그의 경우 개발자가 테스트도 업데이트해야 한다는 XPASS 결과 없이는 버그를 수정할 수 없으므로 QEXPECT_FAIL()가 QSKIP()보다 낫습니다. QSKIP()를 사용하면 테스트를 수정하거나 다시 활성화하라는 알림이 표시되지 않으므로 후속 회귀가 보고되지 않습니다.

QEXPECT_FAIL() 및 테스트를 제외할 적절한 메커니즘 선택도참조하세요 .

QTEST(actual, testElement)

QTEST()는 QCOMPARE()의 편의 매크로로, actual 값과 테스트 데이터의 요소 testElement 를 비교합니다. 그러한 요소가 없으면 테스트는 어설 션을 수행합니다.

그 외에도 QTEST()는 QCOMPARE()와 똑같이 작동합니다.

쓰는 대신

QFETCH(QString, myString);
QCOMPARE(QString("hello").toUpper(), myString);

를 사용할 수 있습니다:

QTEST(QString("hello").toUpper(), "myString");

QCOMPARE()도 참조하세요 .

QTEST_APPLESS_MAIN(TestClass)

TestClass 에서 모든 테스트를 실행하는 main() 함수를 구현합니다.

QTEST_MAIN()처럼 동작하지만 QApplication 객체를 인스턴스화하지 않습니다. 이 매크로는 정말 간단한 독립형 비-GUI 테스트에 사용합니다.

QTEST_MAIN()도 참조하세요 .

QTEST_GUILESS_MAIN(TestClass)

QCoreApplication 객체와 TestClass 객체를 인스턴스화하고 정의된 순서대로 모든 테스트를 실행하는 main() 함수를 구현합니다. 이 매크로를 사용하여 독립 실행형 실행 파일을 빌드합니다.

QTEST_MAIN()처럼 동작하지만 QApplication 객체 대신 QCoreApplication 객체를 인스턴스화합니다. 테스트 케이스에 QApplication 에서 제공하는 기능이 필요하지 않지만 이벤트 루프가 여전히 필요한 경우 이 매크로를 사용하세요.

QTEST_MAIN()도 참조하세요 .

QTEST_MAIN(TestClass)

애플리케이션 객체와 TestClass 를 인스턴스화하는 main() 함수를 구현하고 정의된 순서대로 모든 테스트를 실행합니다. 이 매크로를 사용하여 독립 실행형 실행 파일을 빌드합니다.

QT_WIDGETS_LIB 이 정의되어 있으면 애플리케이션 객체는 QApplication 이 되고, QT_GUI_LIB 이 정의되어 있으면 애플리케이션 객체는 QGuiApplication 이 되고, 그렇지 않으면 QCoreApplication 이 됩니다. qmake가 사용되고 구성에 QT += widgets 이 포함되어 있으면 QT_WIDGETS_LIB 이 자동으로 정의됩니다. 마찬가지로 qmake를 사용하고 구성에 QT += gui 이 포함된 경우 QT_GUI_LIB 이 자동으로 정의됩니다.

참고: 키패드 탐색이 기본적으로 활성화되어 있는 플랫폼에서 QT_WIDGETS_LIB 이 정의되어 있으면 이 매크로가 강제로 비활성화됩니다. 이는 자동 테스트 작성 시 주요 이벤트의 사용을 단순화하기 위한 것입니다. 키패드 탐색을 사용하는 테스트 케이스를 작성하려면 테스트 케이스의 initTestCase() 또는 init() 함수에서 QApplication::setNavigationMode()를 호출하여 키패드 탐색을 활성화해야 합니다.

예시:

QTEST_MAIN(TestQString)

QTEST_APPLESS_MAIN(), QTEST_GUILESS_MAIN(), QTest::qExec() 및 QApplication::setNavigationMode()도 참조하세요 .

QTRY_COMPARE(actual, expected)

5초의 시간 제한을 두고 QTRY_COMPARE_WITH_TIMEOUT()를 호출하여 actualexpected 값의 비교를 수행합니다.

참고: 이 매크로는 테스트 프레임워크에서 호출하는 테스트 함수에서만 사용할 수 있습니다.

QTRY_COMPARE_WITH_TIMEOUT(), QCOMPARE(), QVERIFY(), QTRY_VERIFY() 및 QEXPECT_FAIL()도 참조하세요 .

[since 6.4] QTRY_COMPARE_EQ(computed, baseline)

5초의 시간 제한을 두고 QTRY_COMPARE_EQ_WITH_TIMEOUT 를 호출하여 computedbaseline 값을 비교합니다.

참고: 이 매크로는 테스트 프레임워크에서 호출하는 테스트 함수에서만 사용할 수 있습니다.

이 매크로는 Qt 6.4에 도입되었습니다.

QCOMPARE_EQ() 및 QTRY_COMPARE_EQ_WITH_TIMEOUT()도 참조하세요 .

[since 6.4] QTRY_COMPARE_EQ_WITH_TIMEOUT(computed, baseline, timeout)

이 매크로는 QCOMPARE_EQ()와 유사하지만 비교 결과 true 또는 timeout (밀리초 단위)에 도달할 때까지 computedbaseline 값을 반복적으로 비교합니다. 각 비교 사이에 이벤트가 처리됩니다. 시간 초과에 도달하면 테스트 로그에 실패가 기록되고 테스트는 더 이상 실행되지 않습니다.

Qt 6.8부터 timeout2s 과 같은 std::chrono 리터럴일 수도 있습니다.

참고: 이 매크로는 테스트 프레임워크에 의해 호출되는 테스트 함수에서만 사용할 수 있습니다.

이 매크로는 Qt 6.4에 도입되었습니다.

QCOMPARE_EQ() 및 QTRY_COMPARE_EQ()도 참조하십시오 .

[since 6.4] QTRY_COMPARE_GE(computed, baseline)

5초의 시간 제한을 두고 QTRY_COMPARE_GE_WITH_TIMEOUT 를 호출하여 computedbaseline 값을 비교합니다.

참고: 이 매크로는 테스트 프레임워크에서 호출하는 테스트 함수에서만 사용할 수 있습니다.

이 매크로는 Qt 6.4에 도입되었습니다.

QCOMPARE_GE() 및 QTRY_COMPARE_GE_WITH_TIMEOUT()도 참조하세요 .

[since 6.4] QTRY_COMPARE_GE_WITH_TIMEOUT(computed, baseline, timeout)

이 매크로는 QCOMPARE_GE()와 유사하지만 비교 결과 true 또는 timeout (밀리초 단위)에 도달할 때까지 computedbaseline 값을 반복적으로 비교합니다. 각 비교 사이에 이벤트가 처리됩니다. 시간 초과에 도달하면 테스트 로그에 실패가 기록되고 테스트는 더 이상 실행되지 않습니다.

Qt 6.8부터 timeout2s 과 같은 std::chrono 리터럴일 수도 있습니다.

참고: 이 매크로는 테스트 프레임워크에 의해 호출되는 테스트 함수에서만 사용할 수 있습니다.

이 매크로는 Qt 6.4에 도입되었습니다.

QCOMPARE_GE() 및 QTRY_COMPARE_GE()도 참조하십시오 .

[since 6.4] QTRY_COMPARE_GT(computed, baseline)

5초의 시간 제한을 두고 QTRY_COMPARE_GT_WITH_TIMEOUT 를 호출하여 computedbaseline 값을 비교합니다.

참고: 이 매크로는 테스트 프레임워크에서 호출하는 테스트 함수에서만 사용할 수 있습니다.

이 매크로는 Qt 6.4에 도입되었습니다.

QCOMPARE_GT() 및 QTRY_COMPARE_GT_WITH_TIMEOUT()도 참조하세요 .

[since 6.4] QTRY_COMPARE_GT_WITH_TIMEOUT(computed, baseline, timeout)

이 매크로는 QCOMPARE_GT()와 유사하지만 비교 결과 true 또는 timeout (밀리초 단위)에 도달할 때까지 computedbaseline 값을 반복적으로 비교합니다. 각 비교 사이에 이벤트가 처리됩니다. 시간 초과에 도달하면 테스트 로그에 실패가 기록되고 테스트는 더 이상 실행되지 않습니다.

Qt 6.8부터 timeout2s 과 같은 std::chrono 리터럴일 수도 있습니다.

참고: 이 매크로는 테스트 프레임워크에 의해 호출되는 테스트 함수에서만 사용할 수 있습니다.

이 매크로는 Qt 6.4에 도입되었습니다.

QCOMPARE_GT() 및 QTRY_COMPARE_GT()도 참조하십시오 .

[since 6.4] QTRY_COMPARE_LE(computed, baseline)

5초의 시간 제한을 두고 QTRY_COMPARE_LE_WITH_TIMEOUT 를 호출하여 computedbaseline 값을 비교합니다.

참고: 이 매크로는 테스트 프레임워크에서 호출하는 테스트 함수에서만 사용할 수 있습니다.

이 매크로는 Qt 6.4에 도입되었습니다.

QCOMPARE_LE() 및 QTRY_COMPARE_LE_WITH_TIMEOUT()도 참조하세요 .

[since 6.4] QTRY_COMPARE_LE_WITH_TIMEOUT(computed, baseline, timeout)

이 매크로는 QCOMPARE_LE()와 유사하지만 비교 결과 true 또는 timeout (밀리초 단위)에 도달할 때까지 computedbaseline 값을 반복적으로 비교합니다. 각 비교 사이에 이벤트가 처리됩니다. 시간 초과에 도달하면 테스트 로그에 실패가 기록되고 테스트는 더 이상 실행되지 않습니다.

Qt 6.8부터 timeout2s 과 같은 std::chrono 리터럴일 수도 있습니다.

참고: 이 매크로는 테스트 프레임워크에 의해 호출되는 테스트 함수에서만 사용할 수 있습니다.

이 매크로는 Qt 6.4에 도입되었습니다.

QCOMPARE_LE() 및 QTRY_COMPARE_LE()도 참조하십시오 .

[since 6.4] QTRY_COMPARE_LT(computed, baseline)

5초의 시간 제한을 두고 QTRY_COMPARE_LT_WITH_TIMEOUT 를 호출하여 computedbaseline 값을 비교합니다.

참고: 이 매크로는 테스트 프레임워크에서 호출하는 테스트 함수에서만 사용할 수 있습니다.

이 매크로는 Qt 6.4에 도입되었습니다.

QCOMPARE_LT() 및 QTRY_COMPARE_LT_WITH_TIMEOUT()도 참조하세요 .

[since 6.4] QTRY_COMPARE_LT_WITH_TIMEOUT(computed, baseline, timeout)

이 매크로는 QCOMPARE_LT()와 유사하지만 비교 결과 true 또는 timeout (밀리초 단위)에 도달할 때까지 computedbaseline 값을 반복적으로 비교합니다. 각 비교 사이에 이벤트가 처리됩니다. 시간 초과에 도달하면 테스트 로그에 실패가 기록되고 테스트는 더 이상 실행되지 않습니다.

Qt 6.8부터 timeout2s 과 같은 std::chrono 리터럴일 수도 있습니다.

참고: 이 매크로는 테스트 프레임워크에 의해 호출되는 테스트 함수에서만 사용할 수 있습니다.

이 매크로는 Qt 6.4에 도입되었습니다.

QCOMPARE_LT() 및 QTRY_COMPARE_LT()도 참조하십시오 .

[since 6.4] QTRY_COMPARE_NE(computed, baseline)

5초의 시간 제한을 두고 QTRY_COMPARE_NE_WITH_TIMEOUT 를 호출하여 computedbaseline 값을 비교합니다.

참고: 이 매크로는 테스트 프레임워크에서 호출하는 테스트 함수에서만 사용할 수 있습니다.

이 매크로는 Qt 6.4에 도입되었습니다.

QCOMPARE_NE() 및 QTRY_COMPARE_NE_WITH_TIMEOUT()도 참조하세요 .

[since 6.4] QTRY_COMPARE_NE_WITH_TIMEOUT(computed, baseline, timeout)

이 매크로는 QCOMPARE_NE()와 유사하지만 비교 결과 true 또는 timeout (밀리초 단위)에 도달할 때까지 computedbaseline 값을 반복적으로 비교합니다. 각 비교 사이에 이벤트가 처리됩니다. 시간 초과에 도달하면 테스트 로그에 실패가 기록되고 테스트는 더 이상 실행되지 않습니다.

Qt 6.8부터 timeout2s 과 같은 std::chrono 리터럴일 수도 있습니다.

참고: 이 매크로는 테스트 프레임워크에 의해 호출되는 테스트 함수에서만 사용할 수 있습니다.

이 매크로는 Qt 6.4에 도입되었습니다.

QCOMPARE_NE() 및 QTRY_COMPARE_NE()도 참조하십시오 .

QTRY_COMPARE_WITH_TIMEOUT(actual, expected, timeout)

QTRY_COMPARE_WITH_TIMEOUT() 매크로는 QCOMPARE()와 유사하지만 두 값이 같거나 timeout (밀리초 단위)에 도달할 때까지 actualexpected 값을 반복해서 비교합니다. 각 비교 사이에 이벤트가 처리됩니다. 시간 초과에 도달하면 테스트 로그에 실패가 기록되고 테스트는 더 이상 실행되지 않습니다.

Qt 6.8부터 timeout2s 과 같은 std::chrono 리터럴일 수도 있습니다.

참고: 이 매크로는 테스트 프레임워크에 의해 호출되는 테스트 함수에서만 사용할 수 있습니다.

QTRY_COMPARE(), QCOMPARE(), QVERIFY(), QTRY_VERIFY() 및 QEXPECT_FAIL()도 참조하세요 .

QTRY_VERIFY2(condition, message)

5초의 시간 제한을 두고 QTRY_VERIFY2_WITH_TIMEOUT()을 호출하여 condition 을 확인합니다. condition 이 여전히 거짓이면 message 이 출력됩니다. message 는 일반 C 문자열입니다.

예시:

QTRY_VERIFY2(list.size() > 2, QByteArray::number(list.size()).constData());

참고: 이 매크로는 테스트 프레임워크에서 호출되는 테스트 함수에서만 사용할 수 있습니다.

QTRY_VERIFY2_WITH_TIMEOUT(), QTRY_VERIFY2(), QVERIFY(), QCOMPARE(), QTRY_COMPARE() 및 QEXPECT_FAIL()도 참조하세요 .

QTRY_VERIFY(condition)

5초의 시간 제한을 두고 QTRY_VERIFY_WITH_TIMEOUT()을 호출하여 condition 을 확인합니다.

참고: 이 매크로는 테스트 프레임워크에서 호출하는 테스트 함수에서만 사용할 수 있습니다.

QTRY_VERIFY_WITH_TIMEOUT(), QTRY_VERIFY2(), QVERIFY(), QCOMPARE(), QTRY_COMPARE() 및 QEXPECT_FAIL()도 참조하세요 .

QTRY_VERIFY2_WITH_TIMEOUT(condition, message, timeout)

QTRY_VERIFY2_WITH_TIMEOUT 매크로는 지정된 timeout (밀리초) 이후에도 condition 가 여전히 거짓일 때 message 을 출력한다는 점을 제외하면 QTRY_VERIFY_WITH_TIMEOUT()와 유사합니다. message 은 일반 C 문자열입니다.

Qt 6.8부터 timeout2s 와 같은 std::chrono 리터럴일 수도 있습니다.

예제:

QTRY_VERIFY2_WITH_TIMEOUT(list.size() > 2, QByteArray::number(list.size()).constData(), 10s);

참고: 이 매크로는 테스트 프레임워크에서 호출되는 테스트 함수에서만 사용할 수 있습니다.

QTRY_VERIFY(), QTRY_VERIFY_WITH_TIMEOUT(), QVERIFY(), QCOMPARE(), QTRY_COMPARE() 및 QEXPECT_FAIL()도 참조하세요 .

QTRY_VERIFY_WITH_TIMEOUT(condition, timeout)

QTRY_VERIFY_WITH_TIMEOUT() 매크로는 QVERIFY()와 유사하지만 조건이 참이 되거나 timeout (밀리초 단위)에 도달할 때까지 condition 을 반복적으로 확인합니다. 각 평가 사이에 이벤트가 처리됩니다. 시간 초과에 도달하면 테스트 로그에 실패가 기록되고 테스트는 더 이상 실행되지 않습니다.

Qt 6.8부터 timeout2s 과 같은 std::chrono 리터럴일 수도 있습니다.

참고: 이 매크로는 테스트 프레임워크에 의해 호출되는 테스트 함수에서만 사용할 수 있습니다.

QTRY_VERIFY(), QTRY_VERIFY2_WITH_TIMEOUT(), QVERIFY(), QCOMPARE(), QTRY_COMPARE() 및 QEXPECT_FAIL()도 참조하세요 .

QVERIFY2(condition, message)

QVERIFY2() 매크로는 QVERIFY()와 똑같이 작동하지만 condition 가 거짓일 때 message 을 보고한다는 점을 제외하면 다릅니다. message 은 일반 C 문자열입니다.

이 메시지는 QString 에 적용된 qPrintable()와 같은 일반 C 문자열을 생성하는 함수 호출에서도 얻을 수 있으며, .args() 을 적용하여 일부 데이터 형식을 지정하는 등 일반적인 방법으로 작성할 수도 있습니다.

예시:

QVERIFY2(QFileInfo("file.txt").exists(), "file.txt does not exist.");

예를 들어 파일 개체가 있고 open() 함수를 테스트하는 경우 다음과 같은 문으로 테스트를 작성할 수 있습니다:

bool opened = file.open(QIODevice::WriteOnly);
QVERIFY(opened);

이 테스트가 실패하면 파일이 열리지 않는 이유에 대한 단서를 제공하지 않습니다:

FAIL! : tst_QFile::open_write() 'opened' returned FALSE. ()

테스트 중인 값에서 더 많은 정보를 제공하는 오류 메시지를 만들 수 있는 경우 QVERIFY2() 을 사용하여 테스트 조건과 함께 해당 메시지를 전달하여 실패 시 더 많은 정보를 제공하는 메시지를 제공할 수 있습니다:

QVERIFY2(file.open(QIODevice::WriteOnly),         qPrintable(QString("open %1: %2")
                   .arg(file.fileName()).arg(file.errorString())));

이 브랜치가 Qt CI 시스템에서 테스트 중인 경우, 코드 리뷰 시스템에 게시된 요약에 위의 자세한 실패 메시지가 삽입됩니다:

FAIL! : tst_QFile::open_write() 'opened' returned FALSE. (open /tmp/qt.a3B42Cd: No space left on device)

QVERIFY(), QCOMPARE(), QEXPECT_FAIL(), QCOMPARE_EQ(), QCOMPARE_NE(), QCOMPARE_LT(), QCOMPARE_LE(), QCOMPARE_GT(), QCOMPARE_GE()도 참조하세요 .

QVERIFY(condition)

QVERIFY() 매크로는 condition 가 참인지 아닌지를 확인합니다. 참이면 실행이 계속됩니다. 그렇지 않으면 테스트 로그에 실패가 기록되고 테스트가 더 이상 실행되지 않습니다.

테스트 실패 보고서에 추가 정보를 넣는 것이 실용적이고 중요한 경우 QVERIFY2()를 사용할 수 있습니다.

참고: 이 매크로는 테스트 프레임워크에서 호출되는 테스트 함수에서만 사용할 수 있습니다.

예를 들어 다음 코드는 QSignalSpy 개체가 유효한지 확인하는 데 이 매크로가 사용되는 것을 보여줍니다:

QVERIFY(spy.isValid());

비교 실패 시 예상 값과 실제 값을 모두 보고하므로 실패에 대한 자세한 내용은 QVERIFY(x == y) 대신 QCOMPARE(x, y) 을 사용하세요.

QCOMPARE(), QTRY_VERIFY(), QSignalSpy, QEXPECT_FAIL(), QCOMPARE_EQ(), QCOMPARE_NE(), QCOMPARE_LT(), QCOMPARE_LE(), QCOMPARE_GT(), QCOMPARE_GE()도 참조하세요 .

[since 6.3] QVERIFY_THROWS_EXCEPTION(exceptiontype, ...)

QVERIFY_THROWS_EXCEPTION 매크로는 변수 인수에 지정된 식을 실행하고 식에서 던져진 예외를 잡을 것으로 예상합니다.

몇 가지 가능한 결과가 있습니다:

  • 표현식이 exceptiontype 와 같거나 exceptiontype 에서 파생된 예외를 던지면 실행이 계속됩니다.
  • 그렇지 않고 표현식이 예외를 던지지 않거나 던져진 예외가 std::exception 에서 파생된 경우 테스트 로그에 실패가 기록되고 매크로가 일찍 반환됩니다(둘러싸는 함수에서).
  • 던져진 예외가 std::exceptionexceptiontype 에서 파생되지 않는 경우 테스트 로그에 실패가 기록되고 예외가 다시 던져집니다. 이렇게 하면 예를 들어 pthread 취소 예외와 같은 문제를 방지할 수 있습니다.

매크로는 가변 인수를 사용하므로 표현식에 전처리기가 인수 구분 기호로 간주하는 쉼표가 포함될 수 있습니다(예: 다음과 같이).

QVERIFY_THROWS_EXCEPTION(std::bad_alloc,
// macro arguments:      ^ exceptiontype
                         std::vector<std::pair<int, long>>{42'000'000'000, {42, 42L}});
// macro arguments:      \---------- 1 ----------/  \-------- 2 --------/  \3/  \ 4 /
//                       \----------------------- expression -----------------------/

참고: 이 매크로는 테스트 프레임워크에 의해 호출되는 테스트 함수에서만 사용할 수 있습니다.

이 매크로는 Qt 6.3에 도입되었습니다.

[since 6.3] QVERIFY_THROWS_NO_EXCEPTION(...)

QVERIFY_THROWS_NO_EXCEPTION 매크로는 변수 인수에 지정된 식을 실행하고 식에서 던져진 예외를 잡으려고 시도합니다.

결과는 여러 가지가 있습니다:

  • 표현식에서 예외가 발생하지 않으면 실행이 계속됩니다.
  • 그렇지 않으면 std::exception 에서 파생된 예외가 잡히면 테스트 로그에 실패가 기록되고 매크로가 조기에 반환됩니다(둘러싸는 함수에서 암시적 반환).
  • std::exception 에서 파생되지 않은 예외가 포착되면 테스트 로그에 실패가 기록되고 예외가 다시 발생합니다. 이렇게 하면 예를 들어 pthread 취소 예외와 같은 문제를 방지할 수 있습니다.

이 매크로는 가변 인수를 사용하므로 표현식에 전처리기가 인수 구분 기호로 간주하는 쉼표가 포함될 수 있습니다(예: 다음과 같이).

QVERIFY_THROWS_NO_EXCEPTION(std::pair<int, long>{42, 42L});
// macro arguments:         \---- 1 ----/  \-- 2 -/  \3 /

참고: 이 매크로는 테스트 프레임워크에 의해 호출되는 테스트 함수에서만 사용할 수 있습니다.

이 매크로는 Qt 6.3에 도입되었습니다.

© 2025 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.