Spec-Zone.ru › Qt 5.11

Qt Quick Test

Введение

Qt Quick Test — это фреймворк для модульных тестов QML-приложений. Тестовые случаи записываются как функции JavaScript внутри типа TestCase:

import QtQuick 2.3
import QtTest 1.0

TestCase {
    name: "MathTests"

    function test_math() {
        compare(2 + 2, 4, "2 + 2 = 4")
    }

    function test_fail() {
        compare(2 + 2, 5, "2 + 2 = 5")
    }
}

Функции, имена которых начинаются с test_ , обрабатываются как тестовые случаи, которые необходимо выполнить. См. документацию для типов TestCase и SignalSpy для получения дополнительной информации о написании тестовых случаев.

Выполнение тестов

Тестовые случаи запускаются с помощью C++-оболочки, которая состоит из следующего кода:

#include <QtQuickTest/quicktest.h>
QUICK_TEST_MAIN(example)

Где «example» — это идентификатор, используемый для уникальной идентификации этого набора тестов. Наконец, добавьте CONFIG += qmltestcase в файл проекта:

TEMPLATE = app
TARGET = tst_example
CONFIG += warn_on qmltestcase
SOURCES += tst_example.cpp

Тестовая оболочка рекурсивно сканирует указанную исходную директорию в поисках файлов «tst_*.qml». Если QUICK_TEST_SOURCE_DIR не определено, то при запуске оболочки будет произведено сканирование текущей директории. Другие файлы *.qml могут появиться для вспомогательных QML-компонентов, используемых тестом.

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

tst_example -input /mnt/SDCard/qmltests

Также можно запустить один файл с помощью флага -input. Например:

tst_example -input data/test.qml
tst_example -input <full_path>/test.qml

Примечание: Для теневых сборок, например, необходимо указывать полный путь к файлу qml-теста.

Если ваш тестовый случай требует импортов QML, вы можете добавить их как -import параметры в командную строку программы-теста.

Если IMPORTPATH указано в файле .pro, каждый путь импорта, добавленный к IMPORTPATH , будет передан в качестве аргумента командной строки при запуске теста с помощью «make check»:

IMPORTPATH += $$PWD/../imports/my_module1 $$PWD/../imports/my_module2

Флаг -functions в командной строке вернёт список текущих функций-тестов. Можно запустить одну функцию-тест, используя имя этой функции в качестве аргумента. Например:

tst_example Test_Name::function1

Флаг -help в командной строке вернёт все доступные параметры.

tst_example -help

Выполнение C++ кода перед QML тестами

Для выполнения C++ кода перед запуском любых QML тестов, можно использовать макрос QUICK_TEST_MAIN_WITH_SETUP. Это может быть полезно для установки контекстных свойств в QML движке, среди прочего.

Макрос идентичен QUICK_TEST_MAIN, за исключением дополнительного QObject* аргумента. Фреймворк для тестов вызовет слоты и вызываемые функции с следующими именами:

Имя Цель
void qmlEngineAvailable(QQmlEngine*) Вызывается, когда QML движок доступен. К этому моменту все пути импорта, пути плагинов и дополнительные селекторы файлов будут установлены в движке.

Каждая функция будет вызвана один раз для каждого tst_*.qml файла, поэтому любые аргументы уникальны для каждого теста. Например, это означает, что у каждого QML тестового файла будет свой QML движок.

Следующий пример демонстрирует, как использовать макрос для установки контекстных свойств в QML движке:

#include <QtQuickTest>
#include <QQmlEngine>
#include <QQmlContext>

class Setup : public QObject
{
public:
    Setup() {}

public slots:
    void qmlEngineAvailable(QQmlEngine *engine)
    {
        engine->rootContext()->setContextProperty("myContextProperty", QVariant(true));
    }
};

QUICK_TEST_MAIN_WITH_SETUP(mytest, Setup)

#include "tst_mytest.moc"

Лицензии

Qt Quick Tests доступен по коммерческим лицензиям от The Qt Company. Кроме того, он доступен по лицензиям свободного программного обеспечения. Начиная с Qt 5.4, эти лицензии свободного программного обеспечения — GNU Lesser General Public License, версия 3 или GNU General Public License, версия 2. Дополнительные подробности см. в Qt Licensing.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qtquicktest-index.html

Spec-Zone.ru

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