Spec-Zone.ru › Qt

Тип QML TestCase

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

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

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

Тесты производительности

Функции, имена которых начинаются с «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(), 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.

[since 5.9] object createTemporaryObject(Component component, object parent, object properties)

Эта функция динамически создает объект QML из заданного component с указанным необязательным parent и properties. Возвращаемый объект будет уничтожен (если он ещё не был) после завершения выполнения cleanup(), что гарантирует уничтожение объектов, созданных этой функцией, после каждого теста, независимо от результата теста.

Если при создании объекта произошла ошибка, возвращается null.

Эта функция вызывает component.createObject() внутри.

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

См. также Управление динамически созданными тестовыми объектами.

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

[since 5.4] 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().

[since 5.13] 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().

[since 5.10] 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)

Эмулирует полную последовательность событий, генерируемых двойным щелчком мыши по элементу 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 = item.width / 2, y = item.height / 2, delay = -1, buttons = Qt.NoButton)

Перемещает указатель мыши в позицию, заданную x и y внутри item, удерживая buttons, если заданы. С Qt 6.0, если 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().

[since 5.9] TouchEventSequence touchEvent(object item)

Начинает последовательность событий касания с помощью имитированного сенсорного экрана (QPointingDevice). События передаются окну, содержащему item.

Возвращаемый объект используется для перечисления событий, которые должны быть переданы через один QTouchEvent. Касания передаются окну, содержащему TestCase, если не указано иное.

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

См. также TouchEventSequence::press(), TouchEventSequence::move(), TouchEventSequence::release(), TouchEventSequence::stationary(), TouchEventSequence::commit() и QInputDevice::DeviceType.

tryCompare(obj, property, expected, timeout = 5000, message = "")

Приводит к провалу текущего тестового случая, если указанное свойство property объекта obj не совпадает со значением expected, и отображает необязательное сообщение message. Тест будет повторяться несколько раз до тех пор, пока не истечёт timeout (в миллисекундах).

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

SignalSpy::wait() предоставляет альтернативный способ ожидания получения сигнала.

См. также compare() и SignalSpy::wait().

[since 5.8] tryVerify(function, timeout = 5000, message = "")

Приводит к провалу текущего тестового случая, если функция function не оценивается как true до истечения заданного времени timeout (в миллисекундах). Функция оценивается несколько раз до истечения времени ожидания. Необязательное сообщение message отображается при ошибке.

Эта функция предназначена для тестирования приложений, где условие меняется на основе асинхронных событий. Используйте verify() для тестирования синхронных изменений условий и tryCompare() для тестирования асинхронных изменений свойств.

Например, в приведенном ниже коде нельзя использовать tryCompare(), так как свойство currentItem может быть null в течение короткого промежутка времени:

tryCompare(listView.currentItem, "text", "Hello");

Вместо этого можно использовать tryVerify() для проверки того, что currentItem не null, а затем использовать обычное сравнение:

tryVerify(function(){ return listView.currentItem })
compare(listView.currentItem.text, "Hello")

Этот метод был представлен в 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().

[since 5.13] 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.

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

warn(message)

Выводит сообщение message как предупреждение. Аналогично qWarning(message) в C++.

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

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qml-qttest-testcase.html

Spec-Zone.ru

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