Тип QML TestCase
Представляет собой тестовый случай для модульных тестов. Подробнее...
| Оператор импорта: | import . |
| С момента: | Qt 4.8 |
| Наследует: |
Свойства
Методы
- cleanup()
- cleanupTestCase()
- compare(actual, expected, message)
- object createTemporaryObject(Component component, object parent, object properties)
- object createTemporaryQmlObject(string qml, object parent, string filePath)
- expectFail(tag, message)
- expectFailContinue(tag, message)
- fail(message)
- QtObject findChild(parent, objectName)
- fuzzyCompare(actual, expected, delta, message)
- object grabImage(item)
- ignoreWarning(message)
- init()
- initTestCase()
- bool isPolishScheduled(object item)
- keyClick(key, modifiers, delay)
- keyPress(key, modifiers, delay)
- keyRelease(key, modifiers, delay)
- keySequence(keySequence)
- mouseClick(item, x, y, button, modifiers, delay)
- mouseDoubleClick(item, x, y, button, modifiers, delay)
- mouseDoubleClickSequence(item, x, y, button, modifiers, delay)
- mouseDrag(item, x, y, dx, dy, button, modifiers, delay)
- mouseMove(item, x, y, delay)
- mousePress(item, x, y, button, modifiers, delay)
- mouseRelease(item, x, y, button, modifiers, delay)
- mouseWheel(item, x, y, xDelta, yDelta, button, modifiers, delay)
- skip(message)
- sleep(ms)
- TouchEventSequence touchEvent(object item)
- tryCompare(obj, property, expected, timeout, message)
- tryVerify(function, timeout, message)
- verify(condition, message)
- wait(ms)
- bool waitForItemPolished(object item, int timeout)
- waitForRendering(item, timeout)
- warn(message)
Подробное описание
Введение в тестовые случаи QML
Тестовые случаи написаны как JavaScript-функции внутри типа TestCase:
import QtQuick 2.0
import QtTest 1.2
TestCase {
name: "MathTests"
function test_math() {
compare(2 + 2, 4, "2 + 2 = 4")
}
function test_fail() {
compare(2 + 2, 5, "2 + 2 = 5")
}
} Функции, имена которых начинаются с "test_", обрабатываются как тестовые случаи, которые должны быть выполнены. Свойство name используется для добавления префикса к функциям в выводе:
********* Start testing of MathTests ********* Config: Using QTest library 4.7.2, Qt 4.7.2 PASS : MathTests::initTestCase() FAIL! : MathTests::test_fail() 2 + 2 = 5 Actual (): 4 Expected (): 5 Loc: [/home/.../tst_math.qml(12)] PASS : MathTests::test_math() PASS : MathTests::cleanupTestCase() Totals: 3 passed, 1 failed, 0 skipped ********* Finished testing of MathTests *********
Из-за того, как работают JavaScript-свойства, порядок, в котором находятся тестовые функции, непредсказуем. Для повышения предсказуемости тестовый фреймворк отсортирует функции по возрастанию имени. Это может помочь, когда существуют два теста, которые необходимо выполнить в определённом порядке.
Можно предоставить несколько типов TestCase. Программа тестирования завершит работу после выполнения всех тестов. Если тестовый случай не должен выполняться (потому что условие предварительного выполнения не выполнено), то свойство optional может быть установлено в true.
Тестирование с данными
Данные таблицы могут быть предоставлены тесту с помощью имени функции, которое заканчивается на "_data". Кроме того, можно использовать функцию init_data() для предоставления данных по умолчанию для всех тестовых функций в типе TestCase:
import QtQuick 2.0
import QtTest 1.2
TestCase {
name: "DataTests"
function init_data() {
return [
{tag:"init_data_1", a:1, b:2, answer: 3},
{tag:"init_data_2", a:2, b:4, answer: 6}
];
}
function test_table_data() {
return [
{tag: "2 + 2 = 4", a: 2, b: 2, answer: 4 },
{tag: "2 + 6 = 8", a: 2, b: 6, answer: 8 },
]
}
function test_table(data) {
//data comes from test_table_data
compare(data.a + data.b, data.answer)
}
function test__default_table(data) {
//data comes from init_data
compare(data.a + data.b, data.answer)
}
} Тестовый фреймворк будет итерировать по всем строкам таблицы и передавать каждую строку тестовой функции. Как показано, столбцы можно извлечь для использования в тесте. Столбец tag особый - он печатается тестовым фреймворком, когда строка завершается ошибкой, чтобы помочь читателю определить, какой случай завершился ошибкой среди набора других успешно прошедших тестов.
Benchmarks
Функции, имена которых начинаются с "benchmark_", будут выполняться несколько раз с помощью фреймворка Qt для бенчмарков, при этом среднее время выполнения будет отображено для запусков. Это эквивалентно использованию макроса QBENCHMARK в C++-версии QTestLib.
TestCase {
id: top
name: "CreateBenchmark"
function benchmark_create_component() {
var component = Qt.createComponent("item.qml")
var obj = component.createObject(top)
obj.destroy()
component.destroy()
}
}
RESULT : CreateBenchmark::benchmark_create_component:
0.23 msecs per iteration (total: 60, iterations: 256)
PASS : CreateBenchmark::benchmark_create_component() Чтобы получить эффект макроса QBENCHMARK_ONCE, добавьте префикс "benchmark_once_" к имени тестовой функции.
Моделирование событий клавиатуры и мыши
Методы keyPress(), keyRelease() и keyClick() могут использоваться для моделирования событий клавиатуры в рамках модульных тестов. События передаются текущему фокусированному элементу QML. Вы можете передать значение перечисления Qt.Key или латинский символ (строку длиной один символ)
Rectangle {
width: 50; height: 50
focus: true
TestCase {
name: "KeyClick"
when: windowShown
function test_key_click() {
keyClick(Qt.Key_Left)
keyClick("a")
...
}
}
} Методы mousePress(), mouseRelease(), mouseClick(), mouseDoubleClick(), mouseDoubleClickSequence() и mouseMove() могут использоваться для моделирования событий мыши аналогичным образом.
Примечание: события клавиатуры и мыши могут быть доставлены только после отображения основного окна. Попытки доставить события до этого момента завершатся неудачей. Используйте свойства when и windowShown для отслеживания отображения основного окна.
Управление динамически созданными объектами тестирования
Типичный шаблон с QML-тестами заключается в динамическом создании элемента и его последующем удалении в конце тестовой функции:
TestCase {
id: testCase
name: "MyTest"
when: windowShown
function test_click() {
var item = Qt.createQmlObject("import QtQuick 2.0; Item {}", testCase);
verify(item);
// Test item...
item.destroy();
}
} Проблема с этим шаблоном заключается в том, что любые ошибки в тестовой функции приведут к пропуску вызова item.destroy(), оставляя элемент в сцене до завершения тестового случая. Это может привести к конфликтам с будущими тестами, например, блокируя входные события или генерируя не относящиеся к делу сообщения отладки, что затрудняет отслеживание выполнения кода.
Вызывая createTemporaryQmlObject() вместо этого, гарантируется, что объект будет удалён в конце тестовой функции:
TestCase {
id: testCase
name: "MyTest"
when: windowShown
function test_click() {
var item = createTemporaryQmlObject("import QtQuick 2.0; Item {}", testCase);
verify(item);
// Test item...
// Don't need to worry about destroying "item" here.
}
} Для объектов, созданных с помощью функции createObject() из Component, можно использовать функцию createTemporaryObject().
См. также SignalSpy и Qt Quick Test.
Документация по свойствам
completed : bool
Это свойство будет установлено в true после завершения выполнения тестового случая. Тестовые случаи выполняются только один раз. Начальное значение — false.
name : string
Это свойство определяет имя тестового случая для отчётности результатов. Значение по умолчанию — пустая строка.
TestCase {
name: "ButtonTests"
...
} optional : bool
В приложении для тестирования можно использовать несколько типов TestCase. Приложение завершит работу, как только все тесты будут выполнены. Если тест не нужно запускать (потому что условие выполнения не выполнено), то можно установить это свойство в значение true. Значение по умолчанию — false.
TestCase {
when: false
optional: true
function test_not_run() {
verify(false)
}
} running : bool
Это свойство устанавливается в значение true во время выполнения теста. Начальное значение — false, и оно станет false снова, когда тест завершится.
when : bool
Это свойство следует установить в значение true, когда приложение хочет запустить тесты. Значение по умолчанию — true. В следующем примере тест выполняется при нажатии пользователем кнопки мыши:
Rectangle {
id: foo
width: 640; height: 480
color: "cyan"
MouseArea {
id: area
anchors.fill: parent
}
property bool bar: true
TestCase {
name: "ItemTests"
when: area.pressed
id: test1
function test_bar() {
verify(bar)
}
}
} Приложение для тестирования завершит работу после запуска и выполнения всех типов TestCase. Свойство optional можно использовать для исключения типа TestCase.
См. также optional и completed.
windowShown : bool
Это свойство будет установлено в значение true после отображения окна просмотра QML. Обычно тесты выполняются сразу после загрузки приложения для тестирования и перед отображением окна. Если тест включает визуальные типы и поведение, то его может потребоваться отложить до отображения окна.
Button {
id: button
onClicked: text = "Clicked"
TestCase {
name: "ClickTest"
when: windowShown
function test_click() {
button.clicked();
compare(button.text, "Clicked");
}
}
} Документация по методам
cleanup()
Эта функция вызывается после каждой тестовой функции, выполняемой в типе TestCase. По умолчанию она ничего не делает. Приложение может предоставить собственную реализацию для выполнения очистки после каждой тестовой функции.
См. также init() и cleanupTestCase().
cleanupTestCase()
Эта функция вызывается после завершения всех других тестовых функций в типе TestCase. По умолчанию она ничего не делает. Приложение может предоставить собственную реализацию для выполнения очистки теста.
См. также initTestCase() и cleanup().
compare(actual, expected, message = "")
Прерывает текущий тест, если actual не совпадает с expected, и отображает необязательное message. Аналогично QCOMPARE(actual, expected) в C++.
См. также tryCompare() и fuzzyCompare.
object createTemporaryObject(Component component, object parent, object properties)
Эта функция динамически создает объект QML из заданного component с указанным необязательным parent и properties. Возвращаемый объект будет уничтожен (если он ещё не был) после завершения выполнения cleanup(), что означает, что объекты, созданные с помощью этой функции, гарантированно будут уничтожены после каждого теста, независимо от того, пройден ли тест успешно.
Если при создании объекта произошла ошибка, возвращается null.
Эта функция вызывает component.createObject() внутри.
Этот метод был добавлен в Qt 5.9.
См. также Управление динамически созданными тестовыми объектами.
object createTemporaryQmlObject(string qml, object parent, string filePath)
Эта функция динамически создает объект QML из заданной строки qml с указанным parent. Возвращаемый объект будет уничтожен (если он ещё не был) после завершения выполнения cleanup(), что гарантирует уничтожение объектов после каждого теста, независимо от результата.
Если при создании объекта произошла ошибка, возвращается null.
Если указан filePath, он используется для отчётности об ошибках созданного объекта.
Эта функция вызывает Qt.createQmlObject() внутри.
Этот метод был добавлен в Qt 5.9.
См. также Управление динамически созданными тестовыми объектами.
expectFail(tag, message)
В тест-драйв-тесте отмечает строку, связанную с tag, как ожидающую сбоя. При возникновении ошибки отображается message, тест прерывается, и тест отмечается как пройденный. Аналогично QEXPECT_FAIL(tag, message, Abort) в C++.
Если тест не является тест-драйв-тестом, то tag должен быть пустой строкой.
См. также expectFailContinue().
expectFailContinue(tag, message)
В тест-драйв-тесте отмечает строку, связанную с tag, как ожидающую сбоя. При возникновении ошибки отображается message, и тест продолжает выполняться. Аналогично QEXPECT_FAIL(tag, message, Continue) в C++.
Если тест не является тест-драйв-тестом, то tag должен быть пустой строкой.
См. также expectFail().
fail(message = "")
Прерывает текущий тест с необязательным сообщением message. Аналогично QFAIL(message) в C++.
QtObject findChild(parent, objectName)
Возвращает первый дочерний элемент parent с objectName или null, если такой элемент отсутствует. Поиск осуществляется рекурсивно как для визуальных, так и для невизуальных дочерних элементов, причём визуальные элементы ищутся в первую очередь.
compare(findChild(item, "childObject"), expectedChildObject);
Этот метод был добавлен в Qt 5.4.
fuzzyCompare(actual, expected, delta, message = "")
Прерывает текущий тест, если разность между actual и expected больше delta, и отображает необязательное message. Аналогично qFuzzyCompare(actual, expected) в C++, но с обязательным значением delta.
Функция также может использоваться для сравнения цветов, если actual и expected могут быть преобразованы в цветовые значения. Если какое-либо из отличий для значений каналов RGBA больше delta, тест прерывается.
См. также tryCompare() и compare().
object grabImage(item)
Возвращает объект снимка изображения заданного item.
Возвращаемый объект изображения имеет следующие свойства:
- width Возвращает ширину базового изображения (с версии 5.10)
- height Возвращает высоту базового изображения (с версии 5.10)
- size Возвращает размер базового изображения (с версии 5.10)
Кроме того, возвращаемый объект изображения имеет следующие методы:
-
red(x, y)Возвращает значение красного канала пикселя в позиции x, y -
green(x, y)Возвращает значение зелёного канала пикселя в позиции x, y -
blue(x, y)Возвращает значение синего канала пикселя в позиции x, y -
alpha(x, y)Возвращает значение альфа-канала пикселя в позиции x, y -
pixel(x, y)Возвращает значение цвета пикселя в позиции x, y -
equals(image)Возвращаетtrue, если это изображение идентично image — см. QImage::operator== (с версии 5.6)Например:
var image = grabImage(rect); compare(image.red(10, 10), 255); compare(image.pixel(20, 20), Qt.rgba(255, 0, 0, 255)); rect.width += 10; var newImage = grabImage(rect); verify(!newImage.equals(image));
-
save(path)Сохраняет изображение в заданный path. Если изображение не может быть сохранено, будет выброшено исключение. (с версии 5.10)Это может быть полезно для анализа после завершения выполнения неудачных тестов, например:
var image = grabImage(rect); try { compare(image.width, 100); } catch (ex) { image.save("debug.png"); throw ex; }
ignoreWarning(message)
Отмечает message как игнорируемое предупреждение. При его появлении предупреждение не будет выведено, и тест пройдёт. Если сообщение не появляется, то тест завершается неудачей. Аналогично QTest::ignoreMessage(QtWarningMsg, message) в C++.
С Qt 5.12, message может быть либо строкой, либо регулярным выражением, задающим шаблон сообщений для игнорирования.
Например, следующий фрагмент игнорирует строковое предупреждение:
ignoreWarning("Something sort of bad happened") И следующий фрагмент игнорирует регулярное выражение, соответствующее ряду возможных предупреждений:
ignoreWarning(new RegExp("[0-9]+ bad things happened")) Примечание: Несмотря на то, что это объект JavaScript RegExp, он не будет интерпретироваться как таковой; вместо этого шаблон будет передан в QRegularExpression.
См. также warn().
init()
Эта функция вызывается перед каждой тестовой функцией, выполняемой в типе TestCase. По умолчанию она ничего не делает. Приложение может предоставить собственную реализацию для выполнения инициализации перед каждой тестовой функцией.
См. также cleanup() и initTestCase().
initTestCase()
Эта функция вызывается перед любыми другими тестовыми функциями в типе TestCase. По умолчанию она ничего не делает. Приложение может предоставить собственную реализацию для выполнения инициализации теста.
См. также cleanupTestCase() и init().
bool isPolishScheduled(object item)
Возвращает true, если метод updatePolish() не был вызван для item с момента последнего вызова polish(), в противном случае возвращает false.
При присваивании значений свойствам в QML, любое перерасчётное изменение, которое необходимо произвести в результате присваивания, может не произойти немедленно, а может быть отложено до того, как элемент будет отполирован. В таких случаях вы можете использовать эту функцию, чтобы убедиться, что элемент был отполирован перед продолжением выполнения теста. Например:
verify(isPolishScheduled(item)) verify(waitForItemPolished(item))
Без вызова isPolishScheduled() выше, вызов waitForItemPolished() мог бы увидеть, что полирование не было запланировано, и, следовательно, сразу же пройти, предположив, что элемент уже был отполирован. Эта функция делает очевидным, почему элемент не был отполирован, и позволяет тестам завершаться с ошибкой в таких обстоятельствах.
Этот метод был представлен в Qt 5.13.
См. также waitForItemPolished(), QQuickItem::polish() и QQuickItem::updatePolish().
keyClick(key, modifiers = Qt.NoModifier, delay = -1)
Эмулирует нажатие клавиши key с необязательными modifiers на текущем активном элементе. Если delay больше 0, тест подождёт delay миллисекунд.
Событие будет отправлено окну TestCase, или, в случае нескольких окон, текущему активному окну. Подробнее см. QGuiApplication::focusWindow().
См. также keyPress() и keyRelease().
keyPress(key, modifiers = Qt.NoModifier, delay = -1)
Эмулирует нажатие клавиши key с необязательными modifiers на текущем активном элементе. Если delay больше 0, тест подождёт delay миллисекунд.
Событие будет отправлено окну TestCase, или, в случае нескольких окон, текущему активному окну. Подробнее см. QGuiApplication::focusWindow().
Примечание: В какой-то момент вам необходимо отпустить клавишу, используя keyRelease().
См. также keyRelease() и keyClick().
keyRelease(key, modifiers = Qt.NoModifier, delay = -1)
Эмулирует отпускание клавиши key с необязательными modifiers на текущем активном элементе. Если delay больше 0, тест подождёт delay миллисекунд.
Событие будет отправлено окну TestCase, или, в случае нескольких окон, текущему активному окну. Подробнее см. QGuiApplication::focusWindow().
См. также keyPress() и keyClick().
keySequence(keySequence)
Эмулирует ввод keySequence. Последовательность клавиш может быть задана одной из стандартных комбинаций клавиш или описана строкой, содержащей последовательность до четырёх нажатий клавиш.
Каждое событие будет отправлено окну TestCase, или, в случае нескольких окон, текущему активному окну. Подробнее см. QGuiApplication::focusWindow().
Этот метод был представлен в Qt 5.10.
См. также keyPress(), keyRelease(), Комбинации клавиш в стиле GNU Emacs и Shortcut.sequence.
mouseClick(item, x = item.width / 2, y = item.height / 2, button = Qt.LeftButton, modifiers = Qt.NoModifier, delay = -1)
Эмулирует щелчок кнопкой мыши button с необязательными modifiers на элементе item. Положение щелчка задаётся x и y. Если x и y не определены, позиция будет в центре элемента item. Если указан delay, тест подождёт указанное количество миллисекунд до нажатия и отпускания кнопки.
Позиция, заданная x и y, преобразуется из системы координат элемента item в систему координат окна и затем передаётся. Если item скрыт другим элементом или дочерний элемент item занимает эту позицию, событие будет передано этому другому элементу вместо этого.
См. также mousePress(), mouseRelease(), mouseDoubleClick(), mouseDoubleClickSequence(), mouseMove(), mouseDrag() и mouseWheel().
mouseDoubleClick(item, x = item.width / 2, y = item.height / 2, button = Qt.LeftButton, modifiers = Qt.NoModifier, delay = -1)
Эмулирует двойной щелчок кнопкой мыши button с необязательными modifiers на элементе item. Положение щелчка задаётся x и y. Если x и y не определены, позиция будет в центре элемента item. Если указан delay, тест подождёт указанное количество миллисекунд до нажатия и отпускания кнопки.
Позиция, заданная x и y, преобразуется из системы координат элемента item в систему координат окна и затем передаётся. Если item скрыт другим элементом или дочерний элемент item занимает эту позицию, событие будет передано этому другому элементу вместо этого.
См. также mouseDoubleClickSequence(), mousePress(), mouseRelease(), mouseClick(), mouseMove(), mouseDrag() и mouseWheel().
mouseDoubleClickSequence(item, x = item.width / 2, y = item.height / 2, button = Qt.LeftButton, modifiers = Qt.NoModifier, delay = -1)
Эмулирует полную последовательность событий, генерируемых двойным щелчком кнопкой мыши button с необязательными modifiers на элементе item.
Этот метод воспроизводит последовательность событий мыши, генерируемых при двойном щелчке пользователем: Нажатие-Отпускание-Нажатие-Двойной щелчок-Отпускание.
Положение щелчка задаётся x и y. Если x и y не определены, позиция будет в центре элемента item. Если указан delay, тест подождёт указанное количество миллисекунд до нажатия и отпускания кнопки.
Позиция, заданная x и y, преобразуется из системы координат элемента item в систему координат окна и затем передаётся. Если item скрыт другим элементом или дочерний элемент item занимает эту позицию, событие будет передано этому другому элементу вместо этого.
Этот метод QML был представлен в Qt 5.5.
См. также mouseDoubleClick(), mousePress(), mouseRelease(), mouseClick(), mouseMove(), mouseDrag() и mouseWheel().
mouseDrag(item, x, y, dx, dy, button = Qt.LeftButton, modifiers = Qt.NoModifier, delay = -1)
Эмулирует перетаскивание мыши по элементу item с нажатой кнопкой button и необязательными modifiers. Начальная позиция перетаскивания задаётся x и y, а расстояние перетаскивания - dx и dy. Если указан delay, тест подождёт указанное количество миллисекунд перед отпусканием кнопки.
Позиция, заданная x и y, преобразуется из системы координат элемента item в систему координат окна и затем передаётся. Если item скрыт другим элементом или дочерний элемент item занимает эту позицию, событие будет передано этому другому элементу вместо этого.
См. также mousePress(), mouseClick(), mouseDoubleClick(), mouseDoubleClickSequence(), mouseMove(), mouseRelease() и mouseWheel().
mouseMove(item, x, y, delay = -1)
Перемещает указатель мыши в позицию, заданную x и y внутри item. Если задан delay (в миллисекундах), тест подождёт перед перемещением указателя мыши.
Позиция, заданная x и y, преобразуется из системы координат элемента item в систему координат окна и затем передаётся. Если item скрыт другим элементом или дочерний элемент item занимает эту позицию, событие будет передано этому другому элементу вместо этого.
См. также mousePress(), mouseRelease(), mouseClick(), mouseDoubleClick(), mouseDoubleClickSequence(), mouseDrag() и mouseWheel().
mousePress(item, x = item.width / 2, y = item.height / 2, button = Qt.LeftButton, modifiers = Qt.NoModifier, delay = -1)
Имитирует нажатие кнопки button с необязательными modifiers на элементе item. Позиция определяется x и y. Если x или y не определены, позиция будет центром элемента item. Если указан delay, тест подождёт указанное количество миллисекунд перед нажатием.
Позиция, заданная x и y, преобразуется из системы координат элемента item в систем координат окна и затем передаётся. Если элемент item скрыт другим элементом или дочерний элемент item занимает эту позицию, событие будет передано другому элементу вместо него.
См. такжеmouseRelease(), mouseClick(), mouseDoubleClick(), mouseDoubleClickSequence(), mouseMove(), mouseDrag() и mouseWheel().
mouseRelease(item, x = item.width / 2, y = item.height / 2, button = Qt.LeftButton, modifiers = Qt.NoModifier, delay = -1)
Имитирует отпускание кнопки мыши button с необязательными modifiers на элементе item. Позиция отпускания определяется x и y. Если x или y не определены, позиция будет центром элемента item. Если указан delay, тест подождёт указанное количество миллисекунд перед отпусканием кнопки.
Позиция, заданная x и y, преобразуется из системы координат элемента item в систем координат окна и затем передаётся. Если элемент item скрыт другим элементом или дочерний элемент item занимает эту позицию, событие будет передано другому элементу вместо него.
См. такжеmousePress(), mouseClick(), mouseDoubleClick(), mouseDoubleClickSequence(), mouseMove(), mouseDrag() и mouseWheel().
mouseWheel(item, x, y, xDelta, yDelta, button = Qt.LeftButton, modifiers = Qt.NoModifier, delay = -1)
Имитирует вращение колёсика мыши на элементе item с нажатой кнопкой button и необязательными modifiers. Позиция события колёсика определяется x и y. Если указан delay, тест подождёт указанное количество миллисекунд перед отпусканием кнопки.
Позиция, заданная x и y, преобразуется из системы координат элемента item в систем координат окна и затем передаётся. Если элемент item скрыт другим элементом или дочерний элемент item занимает эту позицию, событие будет передано другому элементу вместо него.
xDelta и yDelta содержат расстояние вращения колёсика в восьмых долях градуса. Подробнее см. QWheelEvent::angleDelta().
См. такжеmousePress(), mouseClick(), mouseDoubleClick(), mouseDoubleClickSequence(), mouseMove(), mouseRelease(), mouseDrag() и QWheelEvent::angleDelta().
skip(message = "")
Пропускает текущий тест и выводит необязательное сообщение message. Если это тест с данными, пропускается только текущая строка. Аналогично QSKIP(message) в C++.
sleep(ms)
Останавливает выполнение на ms миллисекунд без обработки событий Qt.
См. такжеwait() и waitForRendering().
TouchEventSequence touchEvent(object item)
Начинает последовательность событий касания через имитацию QTouchDevice::TouchScreen. События передаются окну, содержащему item.
Возвращаемый объект используется для перечисления событий, которые должны быть переданы через единственный QTouchEvent. Касания передаются окну, содержащему TestCase, если не указано иное.
Этот метод был введён в Qt 5.9.
См. такжеTouchEventSequence::press(), TouchEventSequence::move(), TouchEventSequence::release(), TouchEventSequence::stationary(), TouchEventSequence::commit() и QTouchDevice::TouchScreen.
tryCompare(obj, property, expected, timeout = 5000, message = "")
Приводит к провалу текущего теста, если указанный property объекта obj не совпадает с expected, и отображает необязательное message. Тест будет повторяться несколько раз, пока не будет достигнуто timeout (в миллисекундах).
Эта функция предназначена для тестирования приложений, где значение свойства изменяется на основе асинхронных событий. Используйте compare() для тестирования синхронных изменений свойств.
SignalSpy::wait() предоставляет альтернативный способ ожидания испускания сигнала.
См. такжеcompare() и SignalSpy::wait().
tryVerify(function, timeout = 5000, message = "")
Приводит к провалу текущего теста, если function не оценивается как истинное значение перед истечением заданного timeout (в миллисекундах). Функция оценивается несколько раз, пока не будет достигнуто время ожидания. Необязательное message отображается при неудаче.
Эта функция предназначена для тестирования приложений, где условие меняется на основе асинхронных событий. Используйте verify() для тестирования синхронных изменений условия и tryCompare() для тестирования асинхронных изменений свойств.
Например, в коде ниже нельзя использовать tryCompare(), потому что свойство currentItem может быть null в течение короткого промежутка времени:
Вместо этого мы можем использовать tryVerify(), чтобы сначала проверить, что currentItem не является null, а затем использовать обычное сравнение после:
Этот метод был введён в Qt 5.8.
См. такжеverify(), compare(), tryCompare() и SignalSpy::wait().
verify(condition, message = "")
Приводит к провалу текущего теста, если condition ложно, и отображает необязательное message. Аналогично QVERIFY(condition) или QVERIFY2(condition, message) в C++.
wait(ms)
Ожидает ms миллисекунд, обрабатывая события Qt.
См. такжеsleep() и waitForRendering().
bool waitForItemPolished(object item, int timeout = 5000)
Ожидает timeout миллисекунд или до тех пор, пока для элемента item не будет вызван updatePolish().
Возвращает true, если updatePolish() был вызван для item в течение timeout миллисекунд, иначе возвращает false.
Этот метод был введён в Qt 5.13.
См. такжеisPolishScheduled(), QQuickItem::polish() и QQuickItem::updatePolish().
waitForRendering(item, timeout = 5000)
Ожидает timeout миллисекунд или до тех пор, пока элемент item не будет отрисован рендерером. Возвращает true, если item отрисован в течение timeout миллисекунд, иначе возвращает false. Значение по умолчанию для timeout - 5000.
warn(message)
Выводит message как предупреждение. Аналогично QWARN(message) в C++.
См. такжеignoreWarning().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qml-testcase.html