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