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