Передача параметров и фильтров в набор и модули.

Во-первых, убедитесь, что вы понимаете, как работает обработка опционов в 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