Тестовый исполнитель — это исполнительный блок потока вызовов. Именно здесь фактически запускаются тесты.
Интерфейсы
Исполнители тестов определяются через интерфейс IRemoteTest , который предоставляет простой метод run
, который будет вызываться при запуске тестов.
Это позволяет максимально просто определить прогон теста. Однако на практике разработчикам тестов потребуется больше информации для правильного написания тестов, обычно это информация о сборке и устройстве. Именно здесь пригодятся следующие интерфейсы.
Базовый
Эти два интерфейса наиболее широко используются сегодня, поскольку они отражают основные потребности большинства тестов.
- IBuildReceiver позволяет тесту получить объект
IBuildInfo
, созданный на этапе поставщика сборки, содержащий всю информацию и артефакты, относящиеся к настройке теста. - IDeviceTest позволяет TF получать объект
ITestDevice
, представляющий тестируемое устройство, и предоставляет API для взаимодействия с ним.
Передовой
Существуют дополнительные интерфейсы, которые обеспечивают более сложное взаимодействие между тестовой программой и исполнителем тестов:
- ITestFilterReceiver , который позволяет тесту получать набор фильтров для запуска только определённых тестов. Это полезно при запуске подмножества тестов.
- ITestCollector позволяет исполнителю тестов только выполнить пробный прогон тестов, а не выполнять их. Это полезно для сбора списка всех тестовых случаев.
Существующие участники тестирования
Уже существует множество программ для запуска тестов, некоторые из них предназначены для основных типов тестов:
- AndroidJUnitTest / InstrumentationTest (связан с AJUR на стороне устройства)
- GTest (на стороне устройства и хоста) с библиотекой googletest
- Тесты, управляемые хостом (тесты Java, которые выполняются на хосте и вызывают оттуда устройство)
- Чистые модульные тесты Java (наш исполнитель делает и то, и другое)
- тесты Python
- Тесты Google Benchmark с библиотекой бенчмарков
Помимо вышеперечисленных, существует большое количество пользовательских тест-раннеров; они служат специализированным целям для некоторых функциональных тестов, например, Boot Test.
Напишите новый тестовый раннер
Более подробные рекомендации по написанию нового тестового исполнителя можно найти в разделе «Написание тестов» .