Тестирование приложений на машине сборки
С помощью машины сборки и/или эмулятора можно запускать тесты для приложения из командной строки. Запуск тестов не зависит от технологии виртуализации: VirtualBox или Docker.
Тесты можно запустить тремя способами:
- Отдельной командой после сборки на машине сборки.
- Запуском подпроекта на устройстве или эмуляторе.
- Одновременно со сборкой.
Тесты можно собрать на машине сборки и запустить на машине сборки или эмуляторе с помощью утилиты sfdk. Запускать команды из всех описанных инструкций следует на компьютере разработчика.
В данной инструкции используется пример проекта с тестами QtTest. Его структура и запуск в IDE разбираются в статье о Qt-тестах. Тесты в нём располагаются в отдельной поддиректории tests и устанавливаются по пути /usr/bin/ru.auroraos.QtTestUsage.Tests.
Команды в данной инструкции приводятся для Unix-совместимого терминала. В Linux и macOS можно использовать стандартный терминал, в Windows необходимо использовать Git Bash.
Сборка и запуск тестов c помощью sfdk
Для запуска тестов необходимо выполнить следующие шаги. В них подразумевается, что разработчик изначально находится в каталоге для размещения проектов, указанном при установке SDK, и что в этом каталоге располагается проект QtTestUsage.
-
Указать цель для сборки. Для тестирования можно использовать эмулятор:
sfdk config target=AuroraOS-<номер_релиза>-MB2-<архитектура>
Пример:
sfdk config target=AuroraOS-5.1.3.85-MB2-x86_64
-
Создать каталог для сборки тестов и переместиться в него:
mkdir tests.build.x86_64 && cd tests.build.x86_64
-
Собрать подпроект с тестами:
sfdk build ../QtTestUsage/tests/
В результате в каталоге появятся результаты сборки, в том числе rpm-пакет.
-
Запустить тесты на машине сборки.
sfdk build-shell ./tests/ru.auroraos.QtTestUsage.Tests
В итоге будут выведены результаты тестирования. Пример для QtTestUsage:
********* Start testing of TestMyClass *********
Config: Using QtTest library 5.6.3, Qt 5.6.3 (x86_64-little_endian-lp64-qreal_float shared (dynamic) release build; by GCC 12.3.1 20230626 (Aurora OS gcc 12.3.1+git2-1.3.4.omp))
PASS : TestMyClass::initTestCase()
PASS : TestMyClass::testAdd()
PASS : TestMyClass::testMultiply()
PASS : TestMyClass::cleanupTestCase()
Totals: 4 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of TestMyClass *********
Запуск тестов на устройстве или эмуляторе
Тесты можно запустить на эмуляторе с помощью тех же команд, которые используются и для сборки-запуска приложения.
-
Выполнить шаги 1-3 из инструкции про сборку и запуск тестов c помощью sfdk.
-
Указать устройство для развёртывания. Для тестирования можно использовать эмулятор:
sfdk config device="Aurora OS эмулятор <номер_релиза>-base"
Пример:
sfdk config device="Aurora OS эмулятор 5.1.0.100-base"
-
Установить rpm-пакет:
sfdk deploy --sdk
-
Запустить тесты:
sfdk device exec /usr/bin/ru.auroraos.QtTestUsage.Tests
В итоге будут выведены результаты тестирования. Пример для QtTestUsage:
********* Start testing of TestMyClass *********
Config: Using QtTest library 5.6.3, Qt 5.6.3 (x86_64-little_endian-lp64-qreal_float shared (dynamic) release build; by GCC 12.3.1 20230626 (Aurora OS gcc 12.3.1+git2-1.3.4.omp))
PASS : TestMyClass::initTestCase()
PASS : TestMyClass::testAdd()
PASS : TestMyClass::testMultiply()
PASS : TestMyClass::cleanupTestCase()
Totals: 4 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of TestMyClass *********
Запуск тестов во время сборки
Для запуска тестов во время сборки необходимо в spec-файл добавить раздел %check
с командой запуска тестов.
Пример для QtTestUsage:
%check
./tests/ru.auroraos.QtTestUsage.Tests
Далее следует собрать проект аналогично инструкции про сборку и запуск тестов c помощью sfdk.
-
Указать цель для сборки. Для тестирования можно использовать эмулятор:
sfdk config target=AuroraOS-<номер_релиза>-MB2-<архитектура>
Пример:
sfdk config target=AuroraOS-5.1.3.85-MB2-x86_64
-
Создать каталог для сборки тестов и переместиться в него:
mkdir tests.build.x86_64 && cd tests.build.x86_64
-
Собрать подпроект с тестами:
sfdk build ../QtTestUsage/tests/
В процессе сборки будут выведены результаты тестирования. Пример для QtTestUsage:
********* Start testing of TestMyClass *********
Config: Using QtTest library 5.6.3, Qt 5.6.3 (x86_64-little_endian-lp64-qreal_float shared (dynamic) release build; by GCC 12.3.1 20230626 (Aurora OS gcc 12.3.1+git2-1.3.4.omp))
PASS : TestMyClass::initTestCase()
PASS : TestMyClass::testAdd()
PASS : TestMyClass::testMultiply()
PASS : TestMyClass::cleanupTestCase()
Totals: 4 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of TestMyClass *********