Cómo pasar opciones y filtros a paquetes y módulos

Primero, asegúrate de comprender el manejo de opciones en Tradefed.

La configuración de la suite describe las dos capas que existen en la estructura de la suite:

  • La suite de nivel superior
  • Los módulos

En un contexto de Tradefed que no es de suite, no es necesario pensar en ello; cada opción va a la invocación completa. En un contexto de suite, los módulos se mantienen aislados de la suite, por lo que no todas las opciones están disponibles en su nivel.

Cómo pasar opciones a la suite de nivel superior

La suite de nivel superior se comporta como la configuración estándar de Tradefed: la configuración completa, incluido el ejecutor de la suite, recibe todas las opciones como una configuración de Tradefed que no es de suite.

Cómo pasar opciones a los módulos

De forma predeterminada, los módulos no reciben ninguna de las opciones que se pasan al comando. Deben segmentarse de forma explícita para recibir las opciones a través de la opción module-arg. Este aislamiento de las opciones de los módulos facilita la depuración.

Ejemplo:

cts-tradefed run cts --module-arg <module-name>:<option-name>:<option-value>

cts-tradefed run cts --module-arg CtsGestureTestCases:collect-tests-only:true

La sintaxis garantiza que el módulo segmentado recibirá la opción determinada.

Existen otras formas de pasar opciones a los módulos, como test-arg, que te permite pasar opciones al ejecutor de pruebas de cada módulo según el tipo o la clase del ejecutor.

Ejemplo:

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

La sintaxis no segmenta un módulo en particular, sino todos los ejecutores de pruebas de la clase determinada. test-arg solo considera las implementaciones de IRemoteTest (documentación, código fuente) o ITargetPreparer (documentación, código fuente) como posibles receptores de las opciones.

Cómo pasar opciones a una clase de prueba de Java en un java_test_host

Si agregas un @Option a tu clase de prueba de Java como parte de un destino de compilación java_test_host, deberás usar lo siguiente para insertar esa opción:

cts-tradefed run cts --module-arg <module-name>:set-option:<option-name>:<option-value>

En este contexto, set-option es la opción del ejecutor HostTest del arnés de prueba que une tus clases de Java para ejecutarlas.

Si tu destino de archivo JAR para las opciones contiene varias clases de prueba, de forma predeterminada, se espera que todas tengan la opción @option especificada o que usen la siguiente sintaxis para segmentar una sola clase:

cts-tradefed run cts --module-arg <module-name>:set-option:<class-name>:<option-name>:<option-value>

Cómo pasar filtros a la suite

Para filtrar algunas pruebas de una suite, usamos --include-filter y --exclude-filter para forzar la inclusión o exclusión de una prueba o un módulo en particular, respectivamente. La exclusión tiene prioridad.

Usan este formato: [abi] <module-name> [test name]

Ejemplos:

--include-filter CtsGestureTestCases

--include-filter armeabi-v7a CtsGestureTestCases

--include-filter armeabi-v7a CtsGestureTestCases android.gesture.cts.GestureTest#testGetStrokes