Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

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 otros apks (además del apk de prueba)
  • enviar algunos archivos al dispositivo
  • ejecutar comandos (por ejemplo, adb shell pm ...)

En el pasado, los equipos de componentes generalmente recurrían a la redacción de 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 una máxima flexibilidad, incluso se puede implementar su propio preparador de destino, según lo definido por ITargetPreparer o ITargetCleaner , y configurarlos para utilizar en su propia configuración de módulo de prueba.

Una configuración de 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 pruebas de Trade Federation. Actualmente, las etiquetas principales que se manejan 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 objetivo (véase ITargetPreparer ) que ofrece un método de configuración, que es llamada antes de que se ejecute el módulo de prueba para probar; y si la clase se hace referencia en la etiqueta “target_preparer” también implementa ITargetCleaner , su método de desmontaje será invocado después de que el módulo de prueba ha terminado.

Para usar la configuración de módulo común incorporada, 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 invocar el módulo de prueba, ejecute el comando de shell "la configuración pone la accesibilidad segura_enabled 1" en el dispositivo
  2. una vez finalizado el módulo de prueba, ejecute el comando de shell "la configuración pone la accesibilidad segura_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: el nombre corto del preparador y el nombre real de la opción ofrecida por el preparador.

El propósito exacto del campo de valor depende de cómo el preparador haya definido 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 "ejecutar-comando: ejecutar-comando" significa que estamos estableciendo un valor para la opción "ejecutar-comando" definida por un preparador de destino con el nombre corto "ejecutar-comando"; y el nombre "ejecutar-comando: teardown-command" significa que estamos estableciendo un valor para la opción "teardown-command" también definida por el mismo preparador de destino con el nombre corto "ejecutar-comando". Aquí hay un resumen de los tres preparadores de objetivos comunes:

  • nombre de la clase: PushFilePreparer

    • Nombre corto: push-archivo
    • Función: empuja archivos arbitrarios en la carpeta de destino en caso de prueba en el dispositivo
    • notas:
      • este preparador puede pasar de una carpeta a otra o de un archivo a otro; es decir, no puede insertar un archivo en una carpeta del dispositivo: también debe especificar el nombre del archivo de destino en esa carpeta
    • opciones:
      • empuje: A push-spec, con el formato ' /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-empuje: comando ** A a ejecutar en el dispositivo (con ` adb shell <your command> `) después de todos empujones se han intentado. El caso de uso típico sería usar chmod para permisos
  • nombre de la clase: InstallApkSetup

    • Nombre corto: instalar-apk
    • Función: empuja archivos apk arbitrarias bajo en destino en el dispositivo
    • opciones:
      • prueba-file-name: el nombre del apk para ser instalado en el dispositivo.
      • instalar-arg: argumentos adicionales que se pasa a la tarde mandato de instalación, incluyendo precedidos por guiones, por ejemplo, “-d" Puede ser repetido.
  • nombre de la clase: RunCommandTargetPreparer

    • Nombre corto: al mando ejecutar
    • de función: Ejecuta arbitraria comandos shell antes o después de la ejecución módulo de prueba
    • opciones:
      • run-comando: comando adb shell para ejecutar. Puede repetirse
      • teardown-comando: comando adb shell para ejecutar durante el desmontaje de fase. Puede repetirse

Clase de prueba

Una clase de prueba es la clase de 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 la clase: GTEST

    • Nombre corto: GTEST
    • Función: Una prueba que se ejecuta un paquete de prueba nativa en el dispositivo dado.
    • opciones:
      • prueba de dispositivo nativo camino: El camino en el dispositivo donde se encuentran las pruebas nativas.
  • nombre de la clase: InstrumentationTest

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

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