Тип QML TestCase
Представляет тестовый случай для тестирования. Подробнее...
| Инструкция импорта: | import QtTest 1.12 |
| С момента: | 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()
- 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)
- 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 специальный — он выводится тестовой средой, когда строка завершается ошибкой, чтобы помочь читателю определить, какой случай завершился ошибкой среди набора в остальном успешных тестов.
Тестирование производительности
Функции, имена которых начинаются с "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 или символ latin1 (строку длиной один символ).
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().
keyClick(key, modifiers = Qt.NoModifier, delay = -1)
Эмулирует нажатие key с необязательными modifier на текущем фокусированном элементе. Если delay больше 0, тест подождёт delay миллисекунд.
Событие будет отправлено окну TestCase или, в случае нескольких окон, текущему активному окну. Подробнее см. QGuiApplication::focusWindow().
См. также keyPress() и keyRelease().
keyPress(key, modifiers = Qt.NoModifier, delay = -1)
Эмулирует нажатие клавиши key с необязательными modifier на текущем фокусированном элементе. Если delay больше 0, тест подождёт delay миллисекунд.
Событие будет отправлено окну TestCase или, в случае нескольких окон, текущему активному окну. Подробнее см. QGuiApplication::focusWindow().
Примечание: В какой-то момент вам необходимо отпустить клавишу с помощью keyRelease().
См. также keyRelease() и keyClick().
keyRelease(key, modifiers = Qt.NoModifier, delay = -1)
Эмулирует отпускание клавиши key с необязательными modifier на текущем фокусированном элементе. Если delay больше 0, тест подождёт delay миллисекунд.
Событие будет отправлено окну TestCase или, в случае нескольких окон, текущему активному окну. Подробнее см. QGuiApplication::focusWindow().
См. также keyPress() и keyClick().
keySequence(keySequence)
Эмулирует ввод последовательности keySequence. Последовательность клавиш может быть задана одним из стандартных сочетаний клавиш, или может быть описана строкой, содержащей последовательность до четырёх нажатий клавиш.
Каждое событие будет отправлено окну TestCase или, в случае нескольких окон, текущему активному окну. Подробнее см. QGuiApplication::focusWindow().
Этот метод был добавлен в Qt 5.10.
См. также keyPress(), keyRelease(), GNU Emacs Style Key Sequences, и Shortcut.sequence.
mouseClick(item, x = item.width / 2, y = item.height / 2, button = Qt.LeftButton, modifiers = Qt.NoModifier, delay = -1)
Эмулирует щелчок мыши button с необязательными modifier на элементе 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 с необязательными modifier на элементе 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 с необязательными modifier на элементе 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 и необязательными modifier. Начальная позиция перетаскивания задаётся 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 с необязательными modifier на элементе 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 с опциональными modifier на элементе 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 и опциональными modifier. Позиция события колесика определяется 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 не принимает значение true перед истечением указанного 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().
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.12/qml-qttest-testcase.html