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