Во-первых, убедитесь, что вы понимаете, как работает обработка опционов в Tradefed.
В описании структуры пакета программного обеспечения указаны два уровня, существующие в его структуре:
- Номер люкс высшего уровня
- Модули
В контексте Tradefed, не использующем пакетные решения, об этом не нужно думать; каждый параметр используется для полного вызова. В контексте пакетных решений модули изолированы от пакета, поэтому не все параметры доступны на их уровне.
Передайте параметры в пакет верхнего уровня.
Конфигурация верхнего уровня ведёт себя как стандартная конфигурация Tradefed: полная конфигурация, включая средство запуска пакета, получает все параметры, как и конфигурация Tradefed без пакета.
Передайте параметры модулям.
По умолчанию модули не получают никаких параметров, передаваемых команде. Для получения этих параметров необходимо явно указать их в параметре module-arg . Такая изоляция параметров модулей упрощает отладку.
Пример:
cts-tradefed run cts --module-arg <module-name>:<option-name>:<option-value>
cts-tradefed run cts --module-arg CtsGestureTestCases:collect-tests-only:true
Синтаксис гарантирует, что целевой модуль получит указанную опцию.
Существуют дополнительные способы передачи параметров модулям, например, с помощью test-arg , который позволяет передавать параметры тестовому раннеру каждого модуля в зависимости от типа или класса раннера.
Пример:
cts-tradefed run cts --test-arg <test-class>:<option-name>:<option-value>
cts-tradefed run cts --test-arg com.android.tradefed.testtype.JarHosttest:collect-tests-only:true
Синтаксис не нацелен на конкретный модуль, а на все средства запуска тестов данного класса. test-arg рассматривает только реализации IRemoteTest ( документация , исходный код ) или ITargetPreparer ( документация , исходный код ) в качестве потенциальных получателей параметров.
Передайте параметры тестовому классу Java в объекте java_test_host.
Если вы добавляете аннотацию @Option в свой Java-тестовый класс в рамках цели сборки `java_test_host`, вам потребуется использовать следующий код для внедрения этой опции:
cts-tradefed run cts --module-arg <module-name>:set-option:<option-name>:<option-value>
В данном контексте set-option — это параметр средства запуска HostTest из тестовой среды, которое инкапсулирует ваши Java-классы для их выполнения.
Если целевой JAR-файл для параметров содержит несколько тестовых классов, по умолчанию ожидается, что для всех них будет указана директива `@option`, или же для выбора одного класса следует использовать следующий синтаксис:
cts-tradefed run cts --module-arg <module-name>:set-option:<class-name>:<option-name>:<option-value>
Передайте фильтры в пакет программ.
Для фильтрации некоторых тестов из набора мы используем --include-filter и --exclude-filter , чтобы принудительно включить или исключить определенный тест или модуль соответственно. Исключение имеет приоритет.
Они используют следующий формат: [abi] <module-name> [test name]
Примеры:
--include-filter CtsGestureTestCases
--include-filter armeabi-v7a CtsGestureTestCases
--include-filter armeabi-v7a CtsGestureTestCases android.gesture.cts.GestureTest#testGetStrokes