Тип QML TestCase
Представляет тест-кейс для модульных тестов. Подробнее...
| Заявление об импорте: | import QtTest 1.15 |
| С момента: | Qt 4.8 |
| Наследуется от: |
Свойства
Методы
- cleanup()
- cleanupTestCase()
- compare(actual, expected, message)
- объект createTemporaryObject(Component component, object parent, object properties)
- объект createTemporaryQmlObject(строка qml, object parent, строка filePath)
- expectFail(tag, message)
- expectFailContinue(tag, message)
- fail(message)
- QtObject findChild(parent, objectName)
- fuzzyCompare(actual, expected, delta, message)
- объект 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)
- 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 benchmark, и для запусков будет сообщено среднее значение времени. Это эквивалентно использованию макроса 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(), 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 : строка
Данное свойство определяет имя тестового случая для отчета о результатах. Значение по умолчанию — пустая строка.
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(), mouseDoubleClickSequence(), 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.
См. также 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(), mouseDoubleClickSequence(), mouseMove(), mouseRelease() и mouseWheel().
mouseMove(item, x, y, delay = -1)
Перемещает указатель мыши в позицию, заданную x и y внутри элемента item. Если задан delay (в миллисекундах), тест подождёт перед перемещением указателя мыши.
Позиция, заданная x и y, преобразуется из системы координат item в координаты окна и затем передаётся. Если item скрыт другим элементом или дочерний элемент item занимает эту позицию, событие будет передано другому элементу вместо этого.
См. также mousePress(), mouseRelease(), mouseClick(), 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(), 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(), 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(), 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, а затем использовать обычный compare:
Этот метод был добавлен в 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 миллисекунд или пока метод updatePolish() не будет вызван для элемента item.
Возвращает 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.15/qml-qttest-testcase.html