Google se compromete a promover la equidad racial para las comunidades negras. Ver cómo.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Configuración de compilación simple

Cada nuevo módulo de prueba debe tener un archivo de configuración para dirigir el sistema de compilación con metadatos del módulo, dependencias en tiempo de compilación e instrucciones de empaquetado. Android ahora usa el sistema de compilación Soong para una configuración de prueba más simple.

Soong utiliza archivos Blueprint o .bp , que son descripciones declarativas simples de módulos JSON para construir. Este formato reemplaza el sistema basado en Make utilizado en versiones anteriores. Consulte los archivos de referencia de Soong en el Panel de integración continua para obtener todos los detalles.

Para acomodar las pruebas personalizadas o usar el Conjunto de pruebas de compatibilidad de Android (CTS), siga la Configuración de prueba compleja en su lugar.

Ejemplo

Las siguientes entradas provienen de este ejemplo de archivo de configuración de Blueprint: /platform_testing/tests/example/instrumentation/Android.bp

Aquí se incluye una instantánea para mayor comodidad:

 android_test {
    name: "HelloWorldTests",
    srcs: ["src/**/*.java"],
    sdk_version: "current",
    static_libs: ["android-support-test"],
    certificate: "platform",
    test_suites: ["device-tests"],
}
 

Tenga en cuenta que la declaración android_test al principio indica que esta es una prueba. La inclusión de android_app indicaría inversamente que se trata de un paquete de compilación.

Configuraciones

La siguiente configuración recoge la explicación:

     name: "HelloWorldTests",
 

La configuración del name es necesaria cuando se especifica el tipo de módulo android_test (al comienzo del bloque). Le da un nombre a su módulo, y el APK resultante se llamará igual y con un sufijo .apk , por ejemplo, en este caso, el apk de prueba resultante se llama HelloWorldTests.apk . Además, esto también define un nombre de destino de creación para su módulo, de modo que pueda usar make [options] <HelloWorldTests> para construir su módulo de prueba y todas sus dependencias.

     static_libs: ["android-support-test"],
 

La configuración static_libs indica al sistema de compilación que incorpore el contenido de los módulos nombrados en el apk resultante del módulo actual. Esto significa que se espera que cada módulo con nombre produzca un archivo .jar , y su contenido se usará para resolver referencias de classpath durante el tiempo de compilación, así como también se incorporará al apk resultante.

En este ejemplo, cosas que generalmente podrían ser útiles para las pruebas:

android-support-test está precompilado para la Biblioteca de soporte de prueba de Android, que incluye el nuevo corredor de prueba AndroidJUnitRunner : un reemplazo para el ahora obsoleto InstrumentationTestRunner incorporado, con soporte para el marco de prueba JUnit4. Lea más en Probar aplicaciones en Android .

Si está creando un nuevo módulo de instrumentación, siempre debe comenzar con la biblioteca de android-support-test como su corredor de prueba. El árbol fuente de la plataforma también incluye otros marcos de prueba útiles como ub-uiautomator mockito-target , mockito-target , easymock y más.

     certificate: "platform",
 

La configuración del certificate indica al sistema de compilación que firme el apk con el mismo certificado que la plataforma principal. Esto es necesario si su prueba utiliza un permiso protegido por firma o API. Tenga en cuenta que esto es adecuado para la prueba continua de la plataforma, pero no debe usarse en los módulos de prueba CTS. Tenga en cuenta que este ejemplo utiliza esta configuración de certificado solo con fines ilustrativos: el código de prueba del ejemplo en realidad no necesita que el apk de prueba se firme con el certificado de plataforma especial.

Si está escribiendo una instrumentación para su componente que vive fuera del servidor del sistema, es decir, está empaquetada más o menos como un apk de aplicación normal, excepto que está integrada en la imagen del sistema y puede ser una aplicación privilegiada, es probable que su instrumentación sea apunte al paquete de la aplicación (consulte la sección siguiente sobre el manifiesto) de su componente. En este caso, el archivo MAKE de su aplicación puede tener su propia configuración de certificate , y su módulo de instrumentación debe conservar la misma configuración. Esto se debe a que para apuntar su instrumentación en la aplicación bajo prueba, su apk de prueba y apk de aplicación deben estar firmados con el mismo certificado.

En otros casos, no necesita tener esta configuración en absoluto: el sistema de compilación simplemente lo firmará con un certificado incorporado predeterminado, basado en la variante de compilación, y generalmente se llama dev-keys .

     test_suites: ["device-tests"],
 

La configuración test_suites hace que la prueba sea fácilmente test_suites por el arnés de prueba de la Federación de Comercio. Aquí se pueden agregar otras suites, como CTS, para que esta prueba se pueda compartir.

 ${ANDROID_PRODUCT_OUT}/testcases/HelloWorldTests/HelloWorldTests.apk
 

Configuraciones opcionales

La siguiente configuración opcional recoge la explicación:

     test_config: "path/to/hello_world_test.xml"
 

La configuración test_config indica al sistema de compilación que su objetivo de prueba necesita una configuración específica. Por defecto, un AndroidTest.xml lado de Android.bp está asociado con la configuración.

     auto_gen_config: true
 

La configuración auto_gen_config indica si crear o no la configuración de prueba automáticamente. Si AndroidTest.xml no existe al lado de Android.bp , este atributo no necesita establecerse como verdadero explícitamente.

     require_root: true
 

La configuración require_root indica al sistema de compilación que agregue RootTargetPreparer a la configuración de prueba generada automáticamente. Esto garantiza que la prueba se ejecute con permisos de root.

     test_min_api_level: 29
 

La configuración test_min_api_level indica al sistema de compilación que agregue MinApiLevelModuleController a la configuración de prueba generada automáticamente. Cuando Trade Federation ejecuta la configuración de prueba, la prueba se omitirá si la propiedad del dispositivo es ro.product.first_api_level < test_min_api_level .