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

Сначала убедитесь, что вы понимаете, как обрабатываются параметры в 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