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 prueba compleja

Algunos módulos de prueba pueden requerir una configuración personalizada y pasos de desmontaje que no se pueden realizar dentro del caso de prueba en sí. Los ejemplos típicos pueden incluir:

  • instalar otras aplicaciones (además del apk de prueba)
  • empujar algunos archivos al dispositivo
  • ejecutar comandos (por ejemplo, adb shell pm ...)

En el pasado, los equipos de componentes generalmente recurren a escribir una prueba del lado del host para realizar tales tareas, lo que requiere comprender el arnés de la Federación de Comercio y, por lo general, aumenta la complejidad de un módulo de prueba.

Tomando prestado de CTS, presentamos el concepto de configuración del módulo de prueba para admitir tales tareas, la lista de tareas comunes anterior se puede lograr con solo unas pocas líneas de configuración. Para obtener la máxima flexibilidad, incluso puede implementar su propio preparador de destino, tal como lo define ITargetPreparer o ITargetCleaner , y configurarlo para usarlo en su propia configuración del módulo de prueba.

La configuración de un módulo de prueba para un módulo de prueba es un archivo XML requerido agregado a la carpeta de origen del módulo de nivel superior, llamado 'AndroidTest.xml'. El XML sigue el formato de un archivo de configuración utilizado por el arnés de automatización de prueba de la Federación de Comercio. Actualmente, las etiquetas principales manejadas a través de las configuraciones del módulo de prueba son las etiquetas "target_preparer" y "test".

Preparadores de objetivos

Una etiqueta "target_preparer", como su nombre indica, define un preparador de destino (consulte ITargetPreparer ) que ofrece un método de configuración, que se llama antes de que el módulo de prueba se ejecute para la prueba; y si la clase a la que se hace referencia en la etiqueta "target_preparer" también implementa ITargetCleaner , su método de desmontaje se invocará una vez que el módulo de prueba haya finalizado.

Para utilizar la configuración del módulo común incorporado, agregue un nuevo archivo 'AndroidTest.xml' en la carpeta de nivel superior para su módulo de prueba y complételo con el siguiente contenido:

 <?xml version="1.0" encoding="utf-8"?>
<!-- [insert standard AOSP copyright here] -->
<configuration description="Test module config for Foo">
<!-- insert options here -->
</configuration>
 

Como ejemplo, podemos agregar las siguientes etiquetas de opción (en el comentario "insertar" arriba):

     <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
        <option name="run-command" value="settings put secure accessibility_enabled 1" />
        <option name="teardown-command" value="settings put secure accessibility_enabled 0" />
    </target_preparer>
 

Las opciones configurarán el arnés de prueba para:

  1. antes de que se invoque el módulo de prueba, ejecute el comando de shell "configuración poner Secure accessibility_enabled 1" en el dispositivo
  2. después de que el módulo de prueba haya finalizado, ejecute el comando de shell "configuración poner Secure accessibility_enabled 0"

En este ejemplo particular, la accesibilidad se habilita / deshabilita antes / después de la ejecución del módulo de prueba, respectivamente. Con un ejemplo simple demostrado, es necesario cubrir más detalles sobre cómo se usa la etiqueta "opción". Como se muestra arriba, la etiqueta puede tener dos atributos: nombre, valor. El atributo de nombre indica el nombre de la opción, y se divide en dos partes separadas por dos puntos: nombre corto para el preparador y el nombre de la opción real ofrecida por el preparador.

El propósito exacto del campo de valor depende de cómo el preparador definió la opción: puede ser una cadena, un número, un booleano o incluso una ruta de archivo, etc. En el ejemplo anterior, el nombre "comando-ejecución: comando-ejecución" significa que estamos estableciendo el valor para la opción "ejecutar-comando" definida por un preparador de destino con el nombre corto "ejecutar-comando"; y el nombre "run-command: teardown-command" significa que estamos configurando el valor para la opción "teardown-command" también definida por el mismo preparador de destino con el nombre corto "run-command". Aquí hay un resumen de los tres preparadores de objetivos comunes:

  • nombre de clase: PushFilePreparer

    • nombre corto : archivo de inserción
    • función : inserta archivos arbitrarios en la carpeta del caso de prueba en el destino del dispositivo
    • notas :
      • este preparador puede empujar de carpeta a carpeta o de archivo a archivo; es decir, no puede insertar un archivo debajo de una carpeta en el dispositivo: también debe especificar el nombre de archivo de destino debajo de esa carpeta
    • opciones :
      • push: una especificación push, formateada como ' /path/to/srcfile.txt->/path/to/destfile.txt ' o ' /path/to/srcfile.txt->/path/to/destdir/ '. Puede repetirse Esta ruta puede ser relativa al directorio del módulo de prueba o al directorio de salida en sí.
      • ** post-push: ** Un comando para ejecutar en el dispositivo (con ` adb shell <your command> `) después de que se hayan intentado todos los push. El caso de uso típico sería usar chmod para permisos
  • nombre de clase: InstallApkSetup

    • nombre corto: instalar-apk
    • función: inserta archivos apk arbitrarios en el destino del dispositivo
    • opciones:
      • nombre-archivo-prueba: el nombre del apk que se instalará en el dispositivo.
      • install-arg: argumentos adicionales que se pasarán al comando pm install, incluido el guión inicial, por ejemplo, "-d". Puede repetirse
  • nombre de clase: RunCommandTargetPreparer

    • nombre corto: comando de ejecución
    • función: ejecuta comandos de shell arbitrarios antes o después de la ejecución del módulo de prueba
    • opciones:
      • comando de ejecución: comando de shell adb para ejecutar. Puede ser repetido
      • comando de desmontaje: comando de shell adb para ejecutarse durante la fase de desmontaje. Puede ser repetido

Clase de prueba

Una clase de prueba es la clase de la Federación de Comercio que se utiliza para ejecutar la prueba.

 <test class="com.android.tradefed.testtype.AndroidJUnitTest">
  <option name="package" value="android.test.example.helloworld"/>
  <option name="runner" value="android.support.test.runner.AndroidJUnitRunner"/>
</test>
 

Aquí hay tres clases de prueba comunes:

  • nombre de clase: GTest

    • nombre corto: gtest
    • función: una prueba que ejecuta un paquete de prueba nativo en un dispositivo determinado.
    • opciones:
      • native-test-device-path: la ruta en el dispositivo donde se encuentran las pruebas nativas.
  • nombre de clase: InstrumentationTest

    • nombre corto: instrumentación
    • función: una prueba que ejecuta un paquete de prueba de instrumentación en un dispositivo dado
    • opciones:
      • paquete: el nombre del paquete de manifiesto de la aplicación de prueba de Android para ejecutar.
      • clase: el nombre de la clase de prueba a ejecutar.
      • Método: el nombre del método de prueba a ejecutar.
  • nombre de clase: AndroidJUnitTest

    • función: una prueba que ejecuta un paquete de prueba de instrumentación en un dispositivo determinado usando android.support.test.runner.AndroidJUnitRunner. Esta es la forma principal de ejecutar una prueba de instrumentación.