Interfaz Android robotium pruebas con Teamcity

Como esto no fue contestado (Tal vez no lo encontré) previamente, investigué en la siguiente pregunta:

¿Cómo realizar pruebas funcionales automatizadas en dispositivos Android con robotium, y reportarlos al servidor de integración continua como TeamCity?

Como no encontré ninguna respuesta sobre esa pregunta específica, investigué. Aquí está el resultado de mi investigación y un rápido How-To para ayudar a la gente a realizar pruebas funcionales automatizadas en aplicaciones Android utilizando robotium y luego reportar los resultados a un servidor de integración continuo como TeamCity. Tenga en cuenta que esto puede no ser la mejor solución, pero sentí que la gente podría estar en la misma situación que yo. Asi que aqui esta !

Se han utilizado las siguientes bibliotecas:

  • Robotium ( https://code.google.com/p/robotium/ ): Este es un framework de automatización de pruebas de Android. Le ayuda a realizar pruebas automatizadas como hacer clic en botones, rellenar texto automáticamente y muchas otras cosas.
  • Android Junit Report ( http://zutubi.com/source/projects/android-junit-report/ ): Esta biblioteca es muy útil para publicar el resultado de la prueba en un formato xml explotable. Si desea ejecutar sus pruebas a través de Eclipse, verá los resultados de sus pruebas sobre la marcha, pero para exportarlos, esta biblioteca es muy útil

Suponiendo que tiene un proyecto de Android para probar, cree un proyecto de prueba de Android (Eclipse tiene un flujo de trabajo agradable para crearlo para usted) y configurarlo para que funcione con Robotium. Una instrucción detallada bastante clara sobre cómo hacerlo puede encontrarse aquí: https://code.google.com/p/robotium/wiki/Getting_Started

A continuación, debe agregar Android Junit Report a su proyecto para poder obtener los resultados de sus pruebas. Para ello, agregue la librería Android Junit Report * .jar en la carpeta lib y agréguela a su ruta de compilación (en Eclipse: Proyecto -> Propiedades -> Ruta de construcción de Java -> Bibliotecas -> Añadir tar externo ).

También tiene que cambiar el corredor de prueba de su proyecto. En el AndroidManifest.xml de su proyecto de prueba, agregue lo siguiente:

<instrumentation android:name="com.zutubi.android.junitreport.JUnitReportTestRunner" android:targetPackage="<insert your package ex:com.alth.myproject" /> 

Una vez hecho esto, usted debe ser capaz de ejecutar sus pruebas correctamente. Los resultados de las pruebas deben estar disponibles en su dispositivo (en la siguiente carpeta /data/data//files/junit-report.xml )


El siguiente paso es configurar los pasos de compilación de TeamCity para realizar todas las acciones necesarias para ejecutar las pruebas. Tenga en cuenta que mi solución podría no ser la óptima!

  • Crear paso 1: Limpiar – Línea de comandos runner – Este paso de construcción puede ser opcional dependiendo de cómo decida crear los archivos build.xml y las decisiones de compilación.

     rm -rf <report folder> rm -rf <Project build.xml> rm -rf <Test project build.xml> android update project -p <Path to your project> android update test-projecct -m <Path to your project, relative to the test project> -p <Path to your test project> 
  • Construir paso 2: Lanzar AVD – Command Line runner – Este paso de compilación inicia el dispositivo virtual android. Este paso puede ser opcional si decide ejecutar las pruebas en un dispositivo real.

     emulator -avd <nameOfYourAvd> -no-boot-anim & sleep 45 

    El & evita la compilación para ser interrumpido por el lanzamiento virtual del dispositivo (es comando básico del shell). El comando sleep se utiliza para intentar dejar que el AVD esté listo para el siguiente paso de construcción

  • Construir paso 3: probar la liberación de la aplicación – Ant runner: Construir el proyecto de prueba, instalarlo en el dispositivo virtual

     Path to build xml file : <Path to your test project>/build.xml Additional Ant command line parameters : -f <Path to your test project>/build.xml clean debug install -Dsdk.dir=<Path to your android sdk> 
  • Construir paso 4: AVD Desbloquear – Línea de comando runner: Desbloquear la pantalla AVD para fines de prueba

      bash avdUnlock.sh 

    Cuerpo de avdUnlock.sh aquí: ( http://pastie.org/7919761 ). Este script está enviando información en el puerto AVD regular para desbloquear la pantalla. Esto puede mejorarse enviando el comando sólo a un puerto específico y cambiando el paso de construcción 2 para agregar un puerto específico al lanzamiento del emulador. Sin embargo, esto no es realmente parte de este

  • Construir paso 5: Lanzar pruebas – Línea de comando runner: Lanzar las pruebas

      adb shell pm list instrumentation adb shell am instrument -w <insert your test package ex:com.alth.myproject.test>/com.zutubi.android.junitreport.JUnitReportTestRunner 

    Se podría quitar el primer comando adb. Esto es sólo para fines de depuración para ver qué instrumentación se ha instalado en el dispositivo.

  • Generar paso 6: Pruebas de recuperación – Corredor de línea de comandos: Recuperar informe de pruebas del dispositivo

      adb pull /data/data/<insert your project package ex:com.alth.myproject>/files/junit-report.xml <report folder>/junit-report.xml 
  • Construir paso 7: Emulador final matar – Corredor línea de comandos: Matar el dispositivo virtual android en ejecución

      adb emu kill 
  • Características adicionales de la construcción: Procesamiento de informes XML – Tipo de informe: Ant JUnit

      Monitoring rules : <report folder>/*.xml 

Este How-to no es claramente óptimo, pero responde a la pregunta original. Al hacerlo, es posible obtener el informe de pruebas funcionales de Android y alimentarlo a teamcity con el fin de monitorear los resultados de las pruebas.

Espero que esto ayude a alguien, y yo intentaría contestar a sus preguntas si usted tiene alguno.

Al_th

  • Robotium. WaitForActivity () devuelve false para la actividad incrustada en TabHostActivity
  • ¿Por qué Robotium es más lento cuando realiza tareas sencillas de interfaz de usuario en comparación con el código nativo de Android?
  • Cómo probar automáticamente onResume el comportamiento llamando onDestroy usando Robotium?
  • Continuar las pruebas de Android después de una excepción
  • ¿Cómo probar automáticamente que las aplicaciones se comportan como se espera con respecto a otras actividades?
  • Android Robotium NoClassDefFoundError
  • Robotium - Escoja una cuenta en AccoutPicker con solo
  • Robotium con Mockito o Easy Mock
  • Dos robotium caso de prueba, pero el segundo colgar no responde (en JUnit View)
  • Cómo probar el evento swipe / fling usando jUnit en Android testcase
  • ¿Cómo averiguar qué actividad está encima de la pila usando Robotium / Android SDK?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.