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

Pruebas de instrumentación

Leyó por primera vez la prueba de su aplicación en developer.android.com. Tenga en cuenta que existen algunas diferencias en la forma en que se utilizan las pruebas de instrumentación en las pruebas de plataforma.

En resumen, una prueba de la instrumentación proporciona un entorno de ejecución de la prueba especial que puso en marcha a través de la am instrument del sistema, donde se reinicia y se inicializa con el contexto de aplicación básico del proceso de aplicación específica, y una rosca de instrumentación se inicia dentro del proceso de aplicación VM. Su código de prueba inicia la ejecución de este hilo instrumentación y está provisto de una Instrumentation instancia que proporciona acceso al contexto de aplicación y APIs para manipular el proceso de aplicación bajo prueba.

Conceptos clave

  • una instrumentación debe ser declarado en un paquete de aplicación, con un <instrumentation> Etiqueta anidada en el <manifest> tag del manifiesto paquete de solicitud.
  • un manifiesto de paquete de la aplicación puede contener múltiples técnicamente <instrumentation> etiquetas, aunque no es de uso común en este modo.
  • cada <instrumentation> debe contener:
    • un android:name atributo: debe ser el nombre de una subclase de Instrumentation que se incluye en la aplicación de prueba, que es típicamente el corredor de prueba que está siendo utilizado, por ejemplo: android.support.test.runner.AndroidJUnitRunner
    • un android:targetPackage atributo debe ser definido. Su valor debe establecerse en el paquete de aplicación que se está probando.

Resumen de pasos

  1. A continuación, se muestran los destinos comunes para las pruebas herméticas contra los servicios marco:

    frameworks/base/core/tests/coretests
    frameworks/base/services/tests/servicestests
    

    Si está agregando un módulo de instrumentación nuevo para su componente, consulte

  2. Siga la convención existente si está agregando pruebas en una de las ubicaciones anteriores. Si está configurando un nuevo módulo de prueba, por favor, siga la configuración de AndroidManifest.xml y Android.mk en una de las ubicaciones anteriores

  3. Ver marcos / base / núcleo / pruebas / coretests / para un ejemplo. Tenga en cuenta que estas líneas instalan aplicaciones adicionales:

    <option name="test-file-name" value="FrameworksCoreTests.apk" />
    <option name="test-file-name" value="BstatsTestApp.apk" />
    
  4. No se olvide de marcar su prueba como @SmallTest , @MediumTest o @LargeTest

  5. Construya el módulo de prueba con m, por ejemplo:

    m FrameworksCoreTests
    
  6. Ejecute las pruebas:

    m tradefed-all
    tradefed.sh run template/local_min --template:map test=FrameworksCoreTests
    
  7. Si no usa Tradefed, instale y ejecute manualmente las pruebas:

    1. Instale el apk generado:
    adb install -r ${OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
    

    Consejo: utiliza adb shell pm list instrumentation para encontrar las instrumentaciones dentro del apk acaba de instalar

    1. Ejecute las pruebas con varias opciones:

      1. todas las pruebas en la apk

        adb shell am instrument -w com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      2. todas las pruebas bajo un paquete específico de Java

        adb shell am instrument -w -e package android.animation \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      3. todas las pruebas en una clase específica

        adb shell am instrument -w -e class \
          android.animation.AnimatorSetEventsTest \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      4. un método de prueba específico

        adb shell am instrument -w -e class \
          android.animation.AnimatorSetEventsTest#testCancel \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        

Su prueba se puede hacer una afirmación explícita sobre la aprobación o no de usar JUnit API; Además, cualquier excepción no detectada también provocará una falla funcional.

Para emitir las métricas de rendimiento, su código de prueba puede llamar Instrumentation#sendStatus para enviar una lista de pares de clave y valor. Es importante tener en cuenta que:

  1. las métricas pueden ser enteras o de punto flotante
  2. cualquier valor no numérico será descartado
  3. su apk de prueba puede ser pruebas funcionales o pruebas de métricas, sin embargo, actualmente no se admite la combinación de ambas