Spec-Zone.ru › Qt 5.11

Тип TestCase QML

Представляет тест-кейс для модульных тестов. Подробнее...

Заявление импорта: import QtTest 1.11
С момента: Qt 4.8
Наследует:

Item

  • Список всех членов, включая унаследованные

Свойства

  • completed : bool
  • name : string
  • optional : bool
  • running : bool
  • when : bool
  • windowShown : bool

Методы

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

Benchmarks

Функции, имена которых начинаются с «benchmark_», будут выполняться несколько раз с помощью Qt benchmark framework, и среднее время выполнения будет отображено. Это эквивалентно использованию макроса 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.

См. также running и when.

name : string

Это свойство определяет имя тестового кейса для отчётности о результатах. Значение по умолчанию — пустая строка.

TestCase {
    name: "ButtonTests"
    ...
}

optional : bool

В приложении для тестирования можно указать несколько типов TestCase. Приложение завершится, как только все типы будут выполнены. Если для выполнения тестового случая не требуется (потому что условие предварительной проверки не выполнено), то это свойство можно установить в значение true. Значение по умолчанию — false.

TestCase {
    when: false
    optional: true
    function test_not_run() {
        verify(false)
    }
}

См. также when и completed.

running : bool

Это свойство устанавливается в значение true во время выполнения тестового случая. Начальное значение — false, и значение станет false снова после завершения тестового случая.

См. также completed и when.

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++.

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

init()

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

См. также cleanup() и initTestCase().

initTestCase()

Эта функция вызывается перед любыми другими тестовыми функциями в типе TestCase. Реализация по умолчанию ничего не делает. Приложение может предоставить собственную реализацию для выполнения инициализации тестового случая.

См. также cleanupTestCase() и init().

keyClick(key, modifiers = Qt.NoModifier, delay = -1)

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

Событие будет отправлено в окно TestCase или, в случае нескольких окон, в текущее активное окно. Подробнее см. QGuiApplication::focusWindow().

См. также keyPress() и keyRelease().

keyPress(key, modifiers = Qt.NoModifier, delay = -1)

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

Событие будет отправлено в окно TestCase или, в случае нескольких окон, в текущее активное окно. Подробнее см. QGuiApplication::focusWindow().

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

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

keyRelease(key, modifiers = Qt.NoModifier, delay = -1)

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

Событие будет отправлено в окно 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)

Имитирует нажатие кнопки мыши с необязательным модификатором на элементе item. Позиция нажатия определяется x и y. Если x и y не определены, позиция будет центром элемента item. Если задана задержка, тест подождёт указанное количество миллисекунд до нажатия и до отпускания кнопки.

Позиция, заданная 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)

Имитирует двойное нажатие кнопки мыши с необязательным модификатором на элементе item. Позиция нажатия определяется x и y. Если x и y не определены, позиция будет центром элемента item. Если задана задержка, тест подождёт указанное количество миллисекунд до нажатия и до отпускания кнопки.

Позиция, заданная 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)

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

Этот метод воспроизводит последовательность событий мыши, генерируемых при двойном щелчке пользователя: Нажатие-Отпускание-Нажатие-Двойной щелчок-Отпускание.

Позиция нажатия определяется x и y. Если x и y не определены, позиция будет центром элемента item. Если задана задержка, тест подождёт указанное количество миллисекунд до нажатия и до отпускания кнопки.

Позиция, заданная 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 с нажатой кнопкой и необязательным модификатором. Начальная позиция перетаскивания определяется x и y, а расстояние перетаскивания — dx и dy. Если задана задержка, тест подождёт указанное количество миллисекунд перед отпусканием кнопки.

Позиция, заданная x и y, преобразуется из системы координат элемента item в координаты окна, а затем передаётся. Если item скрыт другим элементом или элемент item занимает эту позицию, то событие будет передано другому элементу вместо него.

Примечание: этот метод не подразумевает действие сброса. Чтобы сделать сброс, необходимо дополнительное mouseRelease(item, x + dx, y + dy).

См. также mousePress(), mouseClick(), mouseDoubleClick(), mouseDoubleClickSequence(), mouseMove(), mouseRelease() и mouseWheel().

mouseMove(item, x, y, delay = -1)

Перемещает указатель мыши в позицию, заданную x и y внутри элемента item. Если задана задержка (в миллисекундах), тест подождёт перед перемещением указателя мыши.

Позиция, заданная 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)

Имитирует нажатие кнопки мыши с необязательным модификатором на элементе item. Позиция определяется x и y. Если x или y не определены, позиция будет центром элемента item. Если задана задержка, тест подождёт указанное количество миллисекунд перед нажатием.

Позиция, заданная 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, а затем использовать обычный 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().

waitForRendering(item, timeout = 5000)

Ожидает timeout миллисекунд или пока item не будет отрисован рендерером. Возвращает true, если item отрисован за timeout миллисекунд, иначе возвращает false. Значение timeout по умолчанию составляет 5000.

См. также sleep() и wait().

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/archives/qt-5.11/qml-qttest-testcase.html

Spec-Zone.ru

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