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