Spec-Zone.ru › Qt 5.6

Пространство имён QTest

Пространство имён QTest содержит все функции и объявления, относящиеся к Qt Test. Подробнее...

Заголовок: #include <QTest>
qmake: QT += testlib
  • Устаревшие члены

Классы

класс QTouchEventSequence

Типы

перечисление AttributeIndex { AI_Undefined, AI_Name, AI_Result, AI_Tests, ..., AI_Iterations }
перечисление KeyAction { Press, Release, Click, Shortcut }
перечисление LogElementType { LET_Undefined, LET_Property, LET_Properties, LET_Failure, ..., LET_SystemError }
перечисление MouseAction { MousePress, MouseRelease, MouseClick, MouseDClick, MouseMove }
перечисление QBenchmarkMetric { FramesPerSecond, BitsPerSecond, BytesPerSecond, WalltimeMilliseconds, ..., EmulationFaults }
перечисление TestFailMode { Abort, Continue }

Функции

void addColumn(const char *name, T *dummy = Q_NULLPTR)
const char * benchmarkMetricName(QBenchmarkMetric metric)
const char * benchmarkMetricUnit(QBenchmarkMetric metric)
const char * текущееИмяПриложения()
const char * текущаяМеткаДанных()
bool текущийТестНеУдался()
const char * текущаяФункцияТеста()
void пропуститьСообщение(QtMsgType type, const char *message)
void пропуститьСообщение(QtMsgType type, const QRegularExpression &messagePattern)
void нажатьКнопку(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void нажатьКнопку(QWindow *window, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void нажатьКнопку(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void нажатьКнопку(QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void нажатьНесколькоКлавиш(QWidget *widget, const QString &sequence, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void событиеКлавиатуры(KeyAction action, QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void событиеКлавиатуры(KeyAction action, QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void событиеКлавиатуры(KeyAction action, QWidget *widget, char ascii, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void событиеКлавиатуры(KeyAction action, QWindow *window, char ascii, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void нажатиеКлавиши(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void нажатиеКлавиши(QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void нажатиеКлавиши(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void нажатиеКлавиши(QWindow *window, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void отпусканиеКлавиши(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void отпусканиеКлавиши(QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void отпусканиеКлавиши(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void отпусканиеКлавиши(QWindow *window, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1)
void щелкнутьМышью(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)
void щелкнутьМышью(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)
void двойнойЩелкатьМышью(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)
void двойнойЩелкатьМышью(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)
void переместитьМышь(QWidget *widget, QPoint pos = QPoint(), int delay = -1)
void переместитьМышь(QWindow *window, QPoint pos = QPoint(), int delay = -1)
void нажатьКнопкуМыши(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)
void нажатьКнопкуМыши(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)
void отпуститьКнопкуМыши(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)
void отпуститьКнопкуМыши(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1)
QTestData & новаяСтрока(const char *dataTag)
int qExec(QObject *testObject, int argc = 0, char **argv = Q_NULLPTR)
int qExec(QObject *testObject, const QStringList &arguments)
QSharedPointer<QTemporaryDir> qИзвлечьДанныеТеста(const QString &dirName)
void qПодождать(int ms)
void qПодождать(int ms)
bool qПодождатьАктивностьОкна(QWindow *window, int timeout = 5000)
bool qПодождатьАктивностьОкна(QWidget *widget, int timeout = 1000)
bool qПодождатьВидимостьОкна(QWindow *window, int timeout = 5000)
bool qПодождатьВидимостьОкна(QWidget *widget, int timeout = 1000)
void setBenchmarkResult(qreal result, QBenchmarkMetric metric)
char * toHexRepresentation(const char *ba, int length)
char * toString(const QHostAddress &addr)
char * toString(const QLatin1String &string)
char * toString(const QByteArray &ba)
char * toString(const QTime &time)
char * toString(const QDate &date)
char * toString(const QDateTime &dateTime)
char * toString(const QChar &character)
char * toString(const QPoint &point)
char * toString(const QSize &size)
char * toString(const QRect &rectangle)
char * toString(const QPointF &point)
char * toString(const QSizeF &size)
char * toString(const QRectF &rectangle)
char * toString(const QUrl &url)
char * toString(const QVariant &variant)
char * toString(const QString &string)
char * toString(QSizePolicy::Policy p)
char * toString(QSizePolicy::ControlTypes cts)
char * toString(QSizePolicy::ControlType ct)
char * toString(QSizePolicy sp)
char * toString(const T &value)
QTouchEventSequence touchEvent(QWidget *widget, QTouchDevice *device, bool autoCommit = true)
QTouchEventSequence touchEvent(QWindow *window, QTouchDevice *device, bool autoCommit = true)

Макросы

QBENCHMARK
QBENCHMARK_ONCE
QCOMPARE(actual, expected)
QEXPECT_FAIL(dataIndex, comment, mode)
QFAIL(message)
QFETCH(type, name)
QFINDTESTDATA(filename)
QSKIP(description)
QTEST(actual, testElement)
QTEST_APPLESS_MAIN(TestClass)
QTEST_GUILESS_MAIN(TestClass)
QTEST_MAIN(TestClass)
QTRY_COMPARE(actual, expected)
QTRY_COMPARE_WITH_TIMEOUT(actual, expected, timeout)
QTRY_VERIFY2(condition, message)
QTRY_VERIFY(condition)
QTRY_VERIFY2_WITH_TIMEOUT(condition, message, timeout)
QTRY_VERIFY_WITH_TIMEOUT(condition, timeout)
QVERIFY2(condition, message)
QVERIFY(condition)
QVERIFY_EXCEPTION_THROWN(expression, exceptiontype)
QWARN(message)

Подробное описание

Пространство имен QTest содержит все функции и объявления, относящиеся к Qt Test.

См. Обзор Qt Test для получения информации о том, как писать модульные тесты.

Классы

класс QTouchEventSequence

Класс QTouchEventSequence используется для моделирования последовательности событий касания. Подробнее...

Документация типов

перечисление QTest::AttributeIndex

Это перечисление нумерует различные тесты.

Постоянная Значение
QTest::AI_Undefined -1
QTest::AI_Name 0
QTest::AI_Result 1
QTest::AI_Tests 2
QTest::AI_Failures 3
QTest::AI_Errors 4
QTest::AI_Type 5
QTest::AI_Description 6
QTest::AI_PropertyValue 7
QTest::AI_QTestVersion 8
QTest::AI_QtVersion 9
QTest::AI_File 10
QTest::AI_Line 11
QTest::AI_Metric 12
QTest::AI_Tag 13
QTest::AI_Value 14
QTest::AI_Iterations 15

Перечисление QTest::KeyAction

Это перечисление описывает возможные действия для обработки клавиш.

Постоянная Значение Описание
QTest::Press 0 Клавиша нажата.
QTest::Release 1 Клавиша отпущена.
QTest::Click 2 Клавиша нажата и отпущена.
QTest::Shortcut 3 Активная комбинация клавиш. Это значение добавлено в Qt 5.6.

Перечисление QTest::LogElementType

Перечисление определяет типы сообщений протокола тестирования.

Постоянная Значение
QTest::LET_Undefined -1
QTest::LET_Property 0
QTest::LET_Properties 1
QTest::LET_Failure 2
QTest::LET_Error 3
QTest::LET_TestCase 4
QTest::LET_TestSuite 5
QTest::LET_Benchmark 6
QTest::LET_SystemError 7

Перечисление QTest::MouseAction

Это перечисление описывает возможные действия для обработки мыши.

Постоянная Значение Описание
QTest::MousePress 0 Нажата кнопка мыши.
QTest::MouseRelease 1 Кнопка мыши отпущена.
QTest::MouseClick 2 Кнопка мыши нажата и отпущена.
QTest::MouseDClick 3 Двойной щелчок кнопкой мыши (нажатие и отпускание дважды).
QTest::MouseMove 4 Указатель мыши перемещён.

Перечисление QTest::QBenchmarkMetric

Это перечисление содержит все элементы, которые можно тестировать на производительность.

Постоянная Значение Описание
QTest::FramesPerSecond 0 Кадров в секунду
QTest::BitsPerSecond 1 Битов в секунду
QTest::BytesPerSecond 2 Байтов в секунду
QTest::WalltimeMilliseconds 3 Время в миллисекундах
QTest::WalltimeNanoseconds 7 Время в наносекундах
QTest::BytesAllocated 8 Использование памяти в байтах
QTest::Events 6 Количество событий
QTest::CPUTicks 4 Время ЦП
QTest::CPUMigrations 9 Перемещения процесса между ЦП
QTest::CPUCycles 10 Такты ЦП
QTest::BusCycles 11 Такты шины
QTest::StalledCycles 12 Заблокированные такты
QTest::InstructionReads 5 Чтение инструкций
QTest::Instructions 13 Выполненные инструкции
QTest::BranchInstructions 14 Инструкции типа ветвления
QTest::BranchMisses 15 Инструкции ветвления, которые неверно предсказаны
QTest::CacheReferences 16 Обращения к кэшу любого типа
QTest::CacheMisses 20 Промахи кэша любого типа
QTest::CacheReads 17 Чтение/загрузка из кэша
QTest::CacheReadMisses 21 Промахи чтения/загрузки из кэша
QTest::CacheWrites 18 Запись/хранение в кэш
QTest::CacheWriteMisses 22 Промахи записи/хранения в кэш
QTest::CachePrefetches 19 Предзагрузки из кэша
QTest::CachePrefetchMisses 23 Промахи предзагрузки из кэша
QTest::ContextSwitches 24 Переключение контекстов
QTest::PageFaults 25 Страницы с ошибками любого типа
QTest::MinorPageFaults 26 Незначительные ошибки страниц
QTest::MajorPageFaults 27 Серьёзные ошибки страниц
QTest::AlignmentFaults 28 Ошибки из-за неправильного выравнивания
QTest::EmulationFaults 29 Ошибки, потребовавшие эмуляции ПО

Обратите внимание, что WalltimeNanoseconds и BytesAllocated предоставляются только для использования через setBenchmarkResult(), и результаты по этим метрикам не могут быть автоматически предоставлены фреймворком QTest.

Это перечисление было введено или изменено в Qt 4.7.

См. также QTest::benchmarkMetricName() и QTest::benchmarkMetricUnit().

Перечисление QTest::TestFailMode

Этот перечисление описывает режимы обработки ожидаемой ошибки макросов QVERIFY() или QCOMPARE().

Постоянная Значение Описание
QTest::Abort 1 Прерывает выполнение теста. Используйте этот режим, когда после ожидаемой ошибки нет смысла продолжать выполнение теста.
QTest::Continue 2 Продолжает выполнение теста после ожидаемой ошибки.

См. также QEXPECT_FAIL().

Документация функций

void QTest::addColumn(const char *name, T *dummy = Q_NULLPTR)

Добавляет столбец типа T в текущие данные теста. name — имя столбца. dummy — обходной вариант для некорректных компиляторов и может быть проигнорирован.

Для заполнения столбца значениями можно использовать newRow(). Используйте QFETCH() для получения данных в самом тесте.

Пример:

void myTestFunction_data() {
    QTest::addColumn<int>("intval");
    QTest::addColumn<QString>("str");
    QTest::addColumn<double>("dbl");

    QTest::newRow("row1") << 1 << "hello" << 1.5;
}

Для добавления пользовательских типов в тестовые данные, тип должен быть зарегистрирован с помощью QMetaType через Q_DECLARE_METATYPE().

Примечание: Этот макрос может быть использован только в функции данных теста, которая вызывается тестовым фреймворком.

См. Data Driven Testing для более подробного примера.

См. также QTest::newRow(), QFETCH() и QMetaType.

const char *QTest::benchmarkMetricName(QBenchmarkMetric metric)

Возвращает значение перечисления metric в виде строки символов.

Эта функция была добавлена в Qt 4.7.

const char *QTest::benchmarkMetricUnit(QBenchmarkMetric metric)

Возвращает единицы измерения для заданного metric.

Эта функция была добавлена в Qt 4.7.

const char *QTest::currentAppName()

Возвращает имя выполняемого в данный момент бинарного файла.

const char *QTest::currentDataTag()

Возвращает имя текущих тестовых данных. Если у теста нет назначенных тестовых данных, функция возвращает 0.

bool QTest::currentTestFailed()

Возвращает true если текущая тестовая функция завершилась неудачно, в противном случае false.

const char *QTest::currentTestFunction()

Возвращает имя текущей выполняемой тестовой функции.

Пример:

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

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

Игнорирует сообщения, созданные с помощью qDebug(), qInfo() или qWarning(). Если сообщение с соответствующим type выводится, оно удаляется из протокола теста. Если тест завершился, а сообщение не было выведено, в протокол теста добавляется ошибка теста.

Примечание: Вызов этой функции игнорирует только одно сообщение. Если сообщение, которое вы хотите проигнорировать, выводится дважды, необходимо дважды вызвать ignoreMessage().

Пример:

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, оно удаляется из протокола теста. Если тест завершился, а сообщение не было выведено, в протокол теста добавляется ошибка теста.

Примечание: Вызов этой функции игнорирует только одно сообщение. Если сообщение, которое вы хотите проигнорировать, выводится дважды, необходимо дважды вызвать ignoreMessage().

Эта функция была добавлена в Qt 5.3.

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

Имитирует нажатие клавиши key с необязательными modifier на widget. Если delay больше 0, тест подождёт delay миллисекунд перед нажатием клавиши.

Примеры:

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

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

Первый пример имитирует нажатие клавиши escape на myWidget без каких-либо модификаторов клавиатуры и без задержки. Второй пример имитирует нажатие shift-escape на myWidget после 200-миллисекундной задержки теста.

См. также QTest::keyClicks().

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

Это перегруженная функция.

Имитирует нажатие клавиши key с необязательными modifier на window. Если delay больше 0, тест подождёт delay миллисекунд перед нажатием клавиши.

Пример:

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

В примере выше имитируется нажатие a на myWindow без каких-либо модификаторов клавиатуры и без задержки теста.

Эта функция была добавлена в Qt 5.0.

См. также QTest::keyClicks().

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

Это перегруженная функция.

Имитирует нажатие клавиши key с необязательными modifier на widget. Если delay больше 0, тест подождёт delay миллисекунд перед нажатием клавиши.

Пример:

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

В примере выше имитируется нажатие a на myWidget без каких-либо модификаторов клавиатуры и без задержки теста.

См. также QTest::keyClicks().

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

Это перегруженная функция.

Имитирует нажатие клавиши key с необязательными modifier на window. Если delay больше 0, тест подождёт delay миллисекунд перед нажатием клавиши.

Примеры:

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

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

Первый пример имитирует нажатие клавиши escape на myWindow без каких-либо модификаторов клавиатуры и без задержки. Второй пример имитирует нажатие shift-escape на myWindow после 200-миллисекундной задержки теста.

Эта функция была добавлена в Qt 5.0.

См. также QTest::keyClicks().

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

Имитирует нажатие последовательности клавиш sequence на widget. Необязательно, можно указать модификатор клавиатуры modifier и задержку (в миллисекундах) delay перед каждым нажатием клавиши.

Пример:

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

В примере выше имитируется нажатие последовательности клавиш, представляющих "hello world", на myWidget без каких-либо модификаторов клавиатуры и без задержки теста.

См. также QTest::keyClick().

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

Отправляет событие Qt клавиши на widget с заданной key и ассоциированным action. Необязательно можно указать модификатор клавиатуры modifier и задержку (в миллисекундах) delay перед отправкой события.

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

Это перегруженный метод.

Отправляет событие Qt о нажатии клавиши на window с заданным key и связанным action. Необязательно, можно указать модификатор клавиатуры и delay (в миллисекундах) перед отправкой события.

Этот метод был представлен в Qt 5.0.

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

Это перегруженный метод.

Отправляет событие Qt о нажатии клавиши на widget с заданным символом ascii и связанным action. Необязательно, можно указать модификатор клавиатуры и delay (в миллисекундах) перед отправкой события.

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

Это перегруженный метод.

Отправляет событие Qt о нажатии клавиши на window с заданным символом ascii и связанным action. Необязательно, можно указать модификатор клавиатуры и delay (в миллисекундах) перед отправкой события.

Этот метод был представлен в Qt 5.0.

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

Имитирует нажатие клавиши key с необязательным modifier на widget. Если delay больше 0, тест подождет delay миллисекунд перед нажатием клавиши.

Примечание: В какой-то момент необходимо отпустить клавишу, используя keyRelease().

См. также QTest::keyRelease() и QTest::keyClick().

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

Это перегруженный метод.

Имитирует нажатие клавиши key с необязательным modifier на window. Если delay больше 0, тест подождет delay миллисекунд перед нажатием клавиши.

Примечание: В какой-то момент необходимо отпустить клавишу, используя keyRelease().

Этот метод был представлен в Qt 5.0.

См. также QTest::keyRelease() и QTest::keyClick().

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

Это перегруженный метод.

Имитирует нажатие клавиши key с необязательным modifier на widget. Если delay больше 0, тест подождет delay миллисекунд перед нажатием клавиши.

Примечание: В какой-то момент необходимо отпустить клавишу, используя keyRelease().

См. также QTest::keyRelease() и QTest::keyClick().

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

Это перегруженный метод.

Имитирует нажатие клавиши key с необязательным modifier на window. Если delay больше 0, тест подождет delay миллисекунд перед нажатием клавиши.

Примечание: В какой-то момент необходимо отпустить клавишу, используя keyRelease().

Этот метод был представлен в Qt 5.0.

См. также QTest::keyRelease() и QTest::keyClick().

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

Имитирует отпускание клавиши key с необязательным modifier на widget. Если delay больше 0, тест подождет delay миллисекунд перед отпусканием клавиши.

См. также QTest::keyPress() и QTest::keyClick().

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

Это перегруженный метод.

Имитирует отпускание клавиши key с необязательным modifier на window. Если delay больше 0, тест подождет delay миллисекунд перед отпусканием клавиши.

Этот метод был представлен в Qt 5.0.

См. также QTest::keyPress() и QTest::keyClick().

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

Это перегруженный метод.

Имитирует отпускание клавиши key с необязательным modifier на widget. Если delay больше 0, тест подождет delay миллисекунд перед отпусканием клавиши.

См. также QTest::keyClick().

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

Это перегруженный метод.

Имитирует отпускание клавиши key с необязательным modifier на window. Если delay больше 0, тест подождет delay миллисекунд перед отпусканием клавиши.

Этот метод был представлен в Qt 5.0.

См. также QTest::keyClick().

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

Имитирует нажатие кнопки мыши button с необязательным modifier на widget. Позиция щелчка определяется 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)

Это перегруженный метод.

Имитирует нажатие кнопки мыши button с необязательным stateKey модификатором на window. Позиция щелчка определяется pos; по умолчанию — центр окна. Если задано delay, тест подождет указанное количество миллисекунд до нажатия и отпускания кнопки.

Этот метод был представлен в Qt 5.0.

См. также QTest::mousePress() и QTest::mouseRelease().

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

Имитирует двойной щелчок мыши по кнопке с необязательным модификатором на виджете. Положение щелчка определяется pos; значение по умолчанию — центр виджета. Если указан delay, тест будет ожидать указанное количество миллисекунд перед каждым нажатием и отпусканием.

См. также QTest::mouseClick().

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

Это перегруженный метод.

Имитирует двойной щелчок мыши по кнопке с необязательным модификатором stateKey на окне. Положение щелчка определяется pos; значение по умолчанию — центр окна. Если указан delay, тест будет ожидать указанное количество миллисекунд перед каждым нажатием и отпусканием.

Данный метод был введён в Qt 5.0.

См. также QTest::mouseClick().

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

Перемещает указатель мыши к виджету. Если pos не указан, указатель мыши перемещается в центр виджета. Если задан delay (в миллисекундах), тест будет ожидать перед перемещением указателя.

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

Это перегруженный метод.

Перемещает указатель мыши к окну. Если pos не указан, указатель мыши перемещается в центр окна. Если задан delay (в миллисекундах), тест будет ожидать перед перемещением указателя.

Данный метод был введён в Qt 5.0.

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

Имитирует нажатие кнопки мыши button с необязательным модификатором modifier на виджете. Положение задаётся 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)

Это перегруженный метод.

Имитирует нажатие кнопки мыши button с необязательным модификатором stateKey на окне. Положение задаётся pos; значение по умолчанию — центр окна. Если delay указан, тест будет ожидать указанное количество миллисекунд перед нажатием.

Данный метод был введён в Qt 5.0.

См. также QTest::mouseRelease() и QTest::mouseClick().

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

Имитирует отпускание кнопки мыши button с необязательным модификатором modifier на виджете. Положение отпускания определяется pos; значение по умолчанию — центр виджета. Если delay указан, тест будет ожидать указанное количество миллисекунд перед отпусканием кнопки.

См. также QTest::mousePress() и QTest::mouseClick().

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

Это перегруженный метод.

Имитирует отпускание кнопки мыши button с необязательным модификатором stateKey на окне. Положение отпускания определяется pos; значение по умолчанию — центр окна. Если delay указан, тест будет ожидать указанное количество миллисекунд перед отпусканием кнопки.

Данный метод был введён в Qt 5.0.

См. также QTest::mousePress() и QTest::mouseClick().

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

Добавляет новую строку к текущим тестовым данным. dataTag — имя тестовых данных, которое будет отображаться в выходных данных теста. Возвращает ссылку на QTestData, которую можно использовать для потоковой передачи данных.

Пример:

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

Примечание: Этот макрос может быть использован только в функции данных теста, вызываемой тестовой средой.

См. Тестирование с использованием данных для более подробного примера.

См. также addColumn() и QFETCH().

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

Выполняет тесты, объявленные в testObject. Кроме того, выполняются частные слоты initTestCase(), cleanupTestCase(), init() и cleanup() при их наличии. См. Создание теста для получения дополнительных сведений.

Можно предоставить аргументы командной строки argc и argv. Список распознаваемых аргументов см. в Аргументы командной строки Qt Test.

Следующий пример запустит все тесты в MyTestObject:

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

Функция возвращает 0, если тесты не завершились неудачей, или значение, отличное от 0, если один или несколько тестов завершились неудачей, или в случае необработанных исключений. (Пропущенные тесты не влияют на возвращаемое значение.)

Для автономных тестовых приложений можно использовать удобный макрос QTEST_MAIN() для объявления функции main(), которая обрабатывает аргументы командной строки и выполняет тесты, избегая необходимости вызывать эту функцию явно.

Возвращаемое значение этой функции также является кодом завершения тестового приложения, когда используется макрос QTEST_MAIN().

Для автономных тестовых приложений эта функция не должна вызываться более одного раза, так как параметры командной строки для ведения протокола тестовых результатов в файлы и выполнения отдельных тестовых функций не будут работать корректно.

Примечание: Эта функция не реентерабельна, одновременно может выполняться только один тест. Тест, выполненный с помощью qExec(), не может запустить другой тест через qExec(), и потоки не разрешены для одновременного вызова qExec().

Если вы программно создали аргументы, а не получили их из аргументов в main(), вам, вероятно, будет интересно использовать QTest::qExec(QObject *, const QStringList &), так как он безопасен для Unicode.

См. также QTEST_MAIN().

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

Это перегруженный метод.

Ведёт себя идентично qExec(QObject *, int, char**), но принимает QStringList аргументов arguments вместо char** списка.

Данный метод был введён в Qt 4.4.

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

Извлекает директорию из ресурсов на диск. Содержимое извлекается рекурсивно в временную папку. Извлечённое содержимое удаляется автоматически, когда ссылка на возвращаемое значение выходит из области видимости.

dirName — имя директории для извлечения из ресурсов.

Возвращает временную директорию, куда были извлечены данные, или null в случае ошибок.

void QTest::qSleep(int ms)

Засыпает на ms миллисекунд, блокируя выполнение теста. qSleep() не будет обрабатывать события и сделает ваш тест неотзывчивым. В процессе засыпания могут сработать таймауты сетевых соединений. Используйте qWait(), чтобы сделать засыпание неблокирующим.

ms должно быть больше 0.

Примечание: Функция qSleep() вызывает либо nanosleep() на Unix, либо Sleep() на Windows, поэтому точность времени, затраченного в qSleep(), зависит от операционной системы.

Пример:

QTest::qSleep(250);

См. также qWait().

END_OF_DOCUMENT_MARKER

[static] void QTest::qWait(int ms)

Ожидает ms миллисекунд. Во время ожидания будут обрабатываться события, и ваш тест останется отзывчивым на события пользовательского интерфейса или сетевого взаимодействия.

Пример:

int i = 0;
while (myNetworkServerNotResponding() && i++ < 50)
    QTest::qWait(250);

Приведённый выше код будет ожидать ответа от сетевого сервера в течение максимального времени около 12,5 секунд.

См. такжеQTest::qSleep() и QSignalSpy::wait().

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

Ожидает timeout миллисекунд или до тех пор, пока окно window не станет активным.

Возвращает true если окно window активное в течение timeout миллисекунд, в противном случае возвращает false.

Эта функция была добавлена в Qt 5.0.

См. такжеQTest::qWaitForWindowExposed() и QWindow::isActive().

[static] bool QTest::qWaitForWindowActive(QWidget *widget, int timeout = 1000)

Ожидает timeout миллисекунд или до тех пор, пока окно виджета widget не станет активным.

Возвращает true если окно виджета widget активно в течение timeout миллисекунд, в противном случае возвращает false.

Эта функция была добавлена в Qt 5.0.

См. такжеQTest::qWaitForWindowExposed() и QWidget::isActiveWindow().

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

Ожидает timeout миллисекунд или до тех пор, пока окно window не станет видимым. Возвращает true если окно window становится видимым в течение timeout миллисекунд, в противном случае возвращает false.

Эта функция полезна в основном для асинхронных систем, таких как X11, где окно отображается на экране некоторое время после того, как ему было указано отобразиться.

Эта функция была добавлена в Qt 5.0.

См. такжеQTest::qWaitForWindowActive() и QWindow::isExposed().

[static] bool QTest::qWaitForWindowExposed(QWidget *widget, int timeout = 1000)

Ожидает timeout миллисекунд или до тех пор, пока окно виджета widget не станет видимым. Возвращает true если окно виджета widget становится видимым в течение timeout миллисекунд, в противном случае возвращает false.

Эта функция полезна в основном для асинхронных систем, таких как X11, где окно отображается на экране некоторое время после того, как ему было указано отобразиться.

Эта функция была добавлена в Qt 5.0.

См. такжеQTest::qWaitForWindowActive().

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

Устанавливает результат бенчмарка для данной функции теста на result.

Используйте эту функцию, если хотите сообщить результаты бенчмарка без использования макроса QBENCHMARK. Используйте metric, чтобы указать, как Qt Test должен интерпретировать результаты.

Контекст результата будет именем функции теста и любыми тегами данных из функции _data. Эта функция может быть вызвана только один раз в каждой функции теста; последующие вызовы заменят ранее сообщённые результаты.

Обратите внимание, что аргумент командной строки -iterations не оказывает влияния на функции тестов без макроса QBENCHMARK.

Эта функция была добавлена в Qt 4.7.

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

Возвращает указатель на строку, представляющую строку ba как последовательность шестнадцатеричных символов, разделённых пробелами. Если входная строка слишком длинная, она усекается. Усечение в возвращаемой строке обозначается многоточием в конце.

length — длина строки ba.

char *QTest::toString(const QHostAddress &addr)

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

Это перегруженная функция.

Возвращает текстовое представление заданной строки string.

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

Это перегруженная функция.

Возвращает текстовое представление массива байтов ba.

См. такжеQTest::toHexRepresentation().

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

Это перегруженная функция.

Возвращает текстовое представление заданного времени time.

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

Это перегруженная функция.

Возвращает текстовое представление заданной даты date.

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

Это перегруженная функция.

Возвращает текстовое представление даты и времени, заданных dateTime.

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

Это перегруженная функция.

Возвращает текстовое представление заданного символа character.

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

Это перегруженная функция.

Возвращает текстовое представление заданной точки point.

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

Это перегруженная функция.

Возвращает текстовое представление заданного размера size.

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

Это перегруженная функция.

Возвращает текстовое представление заданного прямоугольника rectangle.

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

Это перегруженная функция.

Возвращает текстовое представление заданной точки point.

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

Это перегруженная функция.

Возвращает текстовое представление заданного размера size.

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

Это перегруженная функция.

Возвращает текстовое представление заданного прямоугольника rectangle.

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

Это перегруженная функция.

Возвращает текстовое представление заданного URL-адреса url.

Эта функция была добавлена в Qt 4.4.

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

Это перегруженная функция.

Возвращает текстовое представление заданного значения variant.

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

Это перегруженная функция.

Возвращает текстовое представление заданной строки string.

char *QTest::toString(QSizePolicy::Policy p)

Это перегруженная функция.

Возвращает текстовое представление политики p.

Эта функция была добавлена в Qt 5.5.

char *QTest::toString(QSizePolicy::ControlTypes cts)

Это перегруженная функция.

Возвращает текстовое представление типов элементов управления cts.

Эта функция была добавлена в Qt 5.5.

char *QTest::toString(QSizePolicy::ControlType ct)

Это перегруженная функция.

Возвращает текстовое представление типа элемента управления ct.

Эта функция была добавлена в Qt 5.5.

char *QTest::toString(QSizePolicy sp)

Это перегруженная функция.

Возвращает текстовое представление политики размера sp.

Эта функция была добавлена в Qt 5.5.

char *QTest::toString(const T &value)

Возвращает текстовое представление value. Эта функция используется функцией QCOMPARE() для вывода подробной информации в случае сбоя теста.

Вы можете добавить специализации или перегрузки этой функции в свой тест, чтобы включить подробный вывод.

END_OF_DOCUMENT_MARKER

Примечание: Начиная с Qt 5.5, следует отдавать предпочтение предоставлению функции toString() в пространстве имён типа вместо специализации этого шаблона. Если ваш код должен продолжать работать с QTestLib из Qt 5.4 или более ранних версий, вам необходимо продолжать использовать специализацию.

Примечание: Вызывающая сторона toString() должна удалить возвращённые данные, используя delete[]. Ваша реализация должна возвращать строку, созданную с помощью new[] или qstrdup(). Самый простой способ сделать это — создать QByteArray или QString и вызвать QTest::toString() на нём (см. второй пример ниже).

Пример специализации (Qt ≤ 5.4):

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

Приведённый выше пример определяет специализацию toString() для класса с именем MyPoint. Всякий раз, когда сравнение двух экземпляров MyPoint терпит неудачу, QCOMPARE() будет вызывать эту функцию для вывода содержимого MyPoint в журнал тестирования.

Тот же пример, но с перегрузкой (Qt ≥ 5.5):

namespace MyNamespace {
    char *toString(const MyPoint &point)
    {
        // bring QTest::toString overloads into scope:
        using QTest::toString;
        // delegate char* handling to QTest::toString(QByteArray):
        return toString("MyPoint(" +
                        QByteArray::number(point.x()) + ", " +
                        QByteArray::number(point.y()) + ')');
    }
}

См. также QCOMPARE().

QTouchEventSequence QTest::touchEvent(QWidget *widget, QTouchDevice *device, bool autoCommit = true)

Создаёт и возвращает QTouchEventSequence для device для имитации событий для widget.

При добавлении касательных событий в последовательность widget также будет использоваться для преобразования предоставленных координат в экранные, если в соответствующих вызовах press(), move() и т.д. не указан другой виджет.

Касательные события передаются в систему событий при вызове деструктора QTouchEventSequence (т.е. когда объект выходит из области видимости), если autoCommit не установлено в false. Если autoCommit равно false, commit() необходимо вызвать вручную.

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

Создаёт и возвращает QTouchEventSequence для device для имитации событий для window.

При добавлении касательных событий в последовательность window также будет использоваться для преобразования предоставленных координат в экранные, если в соответствующих вызовах press(), move() и т.д. не указано другое окно.

Эта функция была добавлена в Qt 5.0.

Документация макросов

QBENCHMARK

Этот макрос используется для измерения производительности кода в рамках теста. Код, который будет измеряться, находится в блоке кода после этого макроса.

Например:

void TestBenchmark::simple()
{
    QString str1 = QLatin1String("This is a test string");
    QString str2 = QLatin1String("This is a test string");

    QCOMPARE(str1.localeAwareCompare(str2), 0);

    QBENCHMARK {
        str1.localeAwareCompare(str2);
    }
}

См. также Создание эталона и Написание эталона.

QBENCHMARK_ONCE

Макрос QBENCHMARK_ONCE предназначен для измерения производительности блока кода, выполняя его один раз.

Этот макрос используется для измерения производительности кода в рамках теста. Код, который будет измеряться, находится в блоке кода после этого макроса.

В отличие от QBENCHMARK, содержимое содержащегося блока кода выполняется только один раз. Время выполнения будет отображено как "0", если оно слишком мало для измерения выбранным бэкендом. (Используйте)

Эта функция была добавлена в Qt 4.6.

См. также Создание эталона и Написание эталона.

QCOMPARE(actual, expected)

Макрос QCOMPARE сравнивает значение actual со значением expected с помощью оператора равенства. Если actual и expected идентичны, выполнение продолжается. Если нет, в журнале тестов фиксируется ошибка, и дальнейшее выполнение теста прекращается.

В случае сравнения чисел с плавающей запятой и чисел двойной точности используется qFuzzyCompare(). Это означает, что сравнение с 0, вероятно, завершится ошибкой. Одним из решений является сравнение с 1 и добавление 1 к результату.

QCOMPARE пытается вывести содержимое значений при сравнении с ошибкой, поэтому в журнале тестов видно, почему сравнение завершилось ошибкой.

QCOMPARE очень строго относится к типам данных. И actual, и expected должны быть одного типа, иначе тест не будет скомпилирован. Это предотвращает появление непредсказуемого поведения; то есть поведения, которое обычно возникает, когда компилятор неявно преобразует аргумент.

Для собственных классов можно использовать QTest::toString() для форматирования значений для вывода в журнал тестов.

Примечание: Этот макрос может использоваться только в функции теста, вызываемой фреймворком тестов.

Пример:

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

См. также QVERIFY(), QTRY_COMPARE() и QTest::toString().

QEXPECT_FAIL(dataIndex, comment, mode)

Макрос QEXPECT_FAIL() отмечает следующий QCOMPARE() или QVERIFY() как ожидаемую ошибку. Вместо добавления ошибки в журнал тестов, ожидаемая ошибка будет сообщена.

Если QVERIFY() или QCOMPARE() отмечен как ожидаемая ошибка, но проходит успешно, в журнал тестов записывается неожиданное прохождение (XPASS).

Параметр dataIndex описывает, для какой записи в данных теста ожидается ошибка. Передайте пустую строку (""), если ошибка ожидается для всех записей или если данные теста отсутствуют.

comment будет добавлен к журналу тестов для ожидаемой ошибки.

mode — это QTest::TestFailMode и устанавливает, следует ли продолжить выполнение теста.

Примечание: Этот макрос может использоваться только в функции теста, вызываемой фреймворком тестов.

Пример 1:

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

В примере выше, ожидаемая ошибка будет записана в выходные данные теста, если переменная i не равна 42. Если переменная i равна 42, вместо этого будет записано неожиданное прохождение. QEXPECT_FAIL() не влияет на второе утверждение QCOMPARE() в примере.

Пример 2:

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

Функция теста выше не будет продолжать выполнение для записи данных теста data27.

См. также 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)

Макрос fetch создаёт локальную переменную с именем name и типом type в стеке. name должен совпадать с именем элемента из данных теста. Если такого элемента не существует, тест даст ошибку.

Предположим, тест имеет следующие данные:

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;
}

В данных теста есть два элемента, QString с именем aString и целое число с именем expected. Для получения этих значений в самом тесте:

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

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

aString и expected — это переменные в стеке, инициализированные текущими данными теста.

Примечание: Этот макрос может использоваться только в функции теста, вызываемой фреймворком тестов. Функция теста должна иметь функцию _data.

QFINDTESTDATA(filename)

Возвращает QString для файла данных теста, указанного параметром filename, или пустой QString, если файл данных теста не был найден.

Этот макрос позволяет тесту загружать данные из внешнего файла, не вводя абсолютный путь к файлу в тест или не используя относительные пути, которые могут быть подвержены ошибкам.

Возвращаемый путь будет первым из следующих путей, который указывает на существующий файл или директорию:

  • filename, относительный к QCoreApplication::applicationDirPath() (только если объект QCoreApplication или QApplication был создан).
  • filename, относительный к стандартному каталогу установки теста (QLibraryInfo::TestsPath со строчным именем тестового кейса, добавленным в конец).
  • filename, относительный к каталогу, содержащему исходный файл, из которого вызван QFINDTESTDATA.

Если указанный файл/директория не существует ни в одном из этих расположений, в журнал тестов выводится предупреждение.

Например, в данном коде:

// Source: /home/user/sources/myxmlparser/tests/tst_myxmlparser/tst_myxmlparser.cpp
// Build:  /home/user/build/myxmlparser/tests/tst_myxmlparser
// Qt:     /usr/local/Qt-5.0.0
void tst_MyXmlParser::parse()
{
    MyXmlParser parser;
    QString input = QFINDTESTDATA("testxml/simple1.xml");
    QVERIFY(parser.parse(input));
}

Файл данных теста будет определён как первый существующий файл из:

  • /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 был определён для указания рабочей директории, из которой вызывается компилятор, или чтобы в компилятор передавались только абсолютные пути к исходным файлам. В противном случае абсолютный путь к каталогу исходного кода определить невозможно.

Примечание: для тестов, использующих макрос QTEST_APPLESS_MAIN() для генерации функции main(), QFINDTESTDATA не будет пытаться найти данные теста, относительные к QCoreApplication::applicationDirPath(). На практике это означает, что тесты, использующие QTEST_APPLESS_MAIN(), не смогут найти свои данные теста, если они будут запущены из дерева тени.

Эта функция была добавлена в Qt 5.0.

QSKIP(description)

Если вызван из функции теста, макрос QSKIP() останавливает выполнение теста без добавления ошибки в журнал тестов. Можно использовать его для пропуска тестов, которые не имеют смысла в текущей конфигурации. Текст description добавляется в журнал тестов и должен содержать объяснение причины невозможности выполнения теста.

Если тест является основанным на данных, каждый вызов QSKIP() пропустит только текущую строку данных теста, поэтому безусловный вызов QSKIP выведет одно сообщение о пропуске в журнал тестов для каждой строки данных теста.

Если вызван из функции _data, макрос QSKIP() остановит выполнение функции _data и предотвратит выполнение связанной функции теста.

Если вызван из initTestCase() или initTestCase_data(), макрос QSKIP() пропустит все функции теста и _data.

Примечание: Этот макрос может использоваться только в функции теста или функции _data, которые вызываются фреймворком тестов.

Пример:

if (!QSqlDatabase::drivers().contains("SQLITE"))
    QSKIP("This test requires the SQLITE database driver");

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)

Реализует функцию main(), которая выполняет все тесты в TestClass.

Ведёт себя как QTEST_MAIN(), но не создаёт объект QApplication. Используйте этот макрос для очень простых автономных тестов без графического интерфейса.

См. также QTEST_MAIN().

QTEST_GUILESS_MAIN(TestClass)

Реализует функцию main(), которая создаёт объект QCoreApplication и TestClass, и выполняет все тесты в определённом порядке. Используйте этот макрос для создания автономных исполняемых файлов.

Ведёт себя как QTEST_MAIN(), но создаёт объект QCoreApplication вместо объекта QApplication. Используйте этот макрос, если вашему тестовому случаю не нужна функциональность, предлагаемая QApplication, но цикл обработки событий всё же необходим.

Эта функция была добавлена в Qt 5.0.

См. также QTEST_MAIN().

QTEST_MAIN(TestClass)

Реализует функцию main(), которая создаёт объект приложения и TestClass, и выполняет все тесты в определённом порядке. Используйте этот макрос для создания автономных исполняемых файлов.

Если 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().

Пример:

class TestQString: public QObject { ... };
QTEST_MAIN(TestQString)

См. также QTEST_APPLESS_MAIN(), QTEST_GUILESS_MAIN(), QTest::qExec() и QApplication::setNavigationMode().

QTRY_COMPARE(actual, expected)

Выполняет сравнение значений actual и expected, вызвав QTRY_COMPARE_WITH_TIMEOUT() с таймаутом в пять секунд.

Примечание: Эта макрокоманда может быть использована только в тестовой функции, вызываемой тестовым фреймворком.

Эта функция была добавлена в Qt 5.0.

См. также QTRY_COMPARE_WITH_TIMEOUT(), QCOMPARE(), QVERIFY() и QTRY_VERIFY().

QTRY_COMPARE_WITH_TIMEOUT(actual, expected, timeout)

Макрокоманда QTRY_COMPARE_WITH_TIMEOUT() аналогична QCOMPARE(), но выполняет сравнение значений actual и expected повторно до тех пор, пока значения не станут равны или не будет достигнут таймаут (в миллисекундах). Между каждым сравнением будут обрабатываться события. Если таймаут достигнут, в журнале тестов будет зафиксирована ошибка, и дальнейшее выполнение теста прекратится.

Примечание: Эта макрокоманда может быть использована только в тестовой функции, вызываемой тестовым фреймворком.

Эта функция была добавлена в Qt 5.0.

См. также QTRY_COMPARE(), QCOMPARE(), QVERIFY() и QTRY_VERIFY().

QTRY_VERIFY2(condition, message)

Проверяет условие condition, вызвав QTRY_VERIFY2_WITH_TIMEOUT() с таймаутом в пять секунд. Если condition по-прежнему ложно, выводится сообщение message. Сообщение message — это обычная строка C.

Пример:

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

Примечание: Эта макрокоманда может быть использована только в тестовой функции, вызываемой тестовым фреймворком.

Эта функция была добавлена в Qt 5.6.

См. также QTRY_VERIFY2_WITH_TIMEOUT(), QTRY_VERIFY2(), QVERIFY(), QCOMPARE() и QTRY_COMPARE().

QTRY_VERIFY(condition)

Проверяет условие condition, вызвав QTRY_VERIFY_WITH_TIMEOUT() с таймаутом в пять секунд.

Примечание: Эта макрокоманда может быть использована только в тестовой функции, вызываемой тестовым фреймворком.

Эта функция была добавлена в Qt 5.0.

См. также QTRY_VERIFY_WITH_TIMEOUT(), QTRY_VERIFY2(), QVERIFY(), QCOMPARE() и QTRY_COMPARE().

QTRY_VERIFY2_WITH_TIMEOUT(condition, message, timeout)

Макрокоманда QTRY_VERIFY2_WITH_TIMEOUT аналогична QTRY_VERIFY_WITH_TIMEOUT(), за исключением того, что выводит подробное сообщение message, когда condition по-прежнему ложно после указанного таймаута (в миллисекундах). Сообщение message — это обычная строка C.

Пример:

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

Примечание: Эта макрокоманда может быть использована только в тестовой функции, вызываемой тестовым фреймворком.

Эта функция была добавлена в Qt 5.6.

См. также QTRY_VERIFY(), QTRY_VERIFY_WITH_TIMEOUT(), QVERIFY(), QCOMPARE() и QTRY_COMPARE().

QTRY_VERIFY_WITH_TIMEOUT(condition, timeout)

Макрокоманда QTRY_VERIFY_WITH_TIMEOUT() аналогична QVERIFY(), но проверяет условие condition повторно до тех пор, пока условие не станет истинным или не будет достигнут таймаут (в миллисекундах). Между каждым выполнением будут обрабатываться события. Если таймаут достигнут, в журнале тестов будет зафиксирована ошибка, и дальнейшее выполнение теста прекратится.

Примечание: Эта макрокоманда может быть использована только в тестовой функции, вызываемой тестовым фреймворком.

Эта функция была добавлена в Qt 5.0.

См. также QTRY_VERIFY(), QTRY_VERIFY2_WITH_TIMEOUT(), QVERIFY(), QCOMPARE() и QTRY_COMPARE().

QVERIFY2(condition, message)

Макрокоманда QVERIFY2() ведет себя точно так же, как QVERIFY(), за исключением того, что выводит подробное сообщение message, когда condition ложно. Сообщение message — это обычная строка C.

Пример:

QVERIFY2(1 + 1 == 2, "A breach in basic arithmetic occurred.");

См. также QVERIFY() и QCOMPARE().

QVERIFY(condition)

Макрокоманда QVERIFY() проверяет, истинно ли условие condition. Если оно истинно, выполнение продолжается. Если нет, в журнале тестов будет зафиксирована ошибка, и дальнейшее выполнение теста прекратится.

Примечание: Эта макрокоманда может быть использована только в тестовой функции, вызываемой тестовым фреймворком.

Пример:

QVERIFY(1 + 1 == 2);

См. также QCOMPARE() и QTRY_VERIFY().

QVERIFY_EXCEPTION_THROWN(expression, exceptiontype)

Макрокоманда QVERIFY_EXCEPTION_THROWN выполняет выражение expression и пытается перехватить исключение, сгенерированное expression. Если expression генерирует исключение, и его тип совпадает с exceptiontype или exceptiontype заменяется типом сгенерированного исключения (т.е. обычно тип сгенерированного исключения публично происходит от exceptiontype), выполнение будет продолжено. Если сгенерирован исключение несовместимого типа или expression не генерирует никакого исключения, в журнале тестов будет зафиксирована ошибка, и дальнейшее выполнение теста прекратится.

Примечание: Эта макрокоманда может быть использована только в тестовой функции, вызываемой тестовым фреймворком.

Эта функция была добавлена в Qt 5.3.

QWARN(message)

Добавляет сообщение message в качестве предупреждения в журнал тестов. Эта макрокоманда может использоваться в любом месте ваших тестов.

Примечание: Эта функция безопасна в многопоточных средах.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qtest.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API