¿Cómo hacer pruebas de integración en Android con el nuevo sistema de generación de Gradle?
Nuestra aplicación Android necesita pruebas automatizadas, y nuestro grupo está usando Robotium para manejar eso para nosotros. Esto no es un problema para las pruebas de unidad, pero también estamos escribiendo un conjunto de pruebas de integración de extremo a extremo para ejercer no sólo el cliente por parte de los servidores back-end. Tengo algunas pruebas que hacen esto, pero si es posible, me gustaría separarlas por separado de las pruebas de unidad para que nuestras integraciones continuas no requieran que un servidor en vivo se ejecute para completarlo.
Estamos usando el nuevo y brillante sistema de construcción de Gradle. Me pregunto si podría hacer algo como un sabor solo de prueba o un subproyecto que depende de la APK padre para hacerlo ir. Intenté hacer este trabajo con un proyecto separado por completo usando las instrucciones de Robotium para probar un APK de depuración sin fuente, pero no funcionó. Tal vez porque estaba en hardware real y no en un emulador. He tenido mala suerte con el emulador, incluso con la aceleración de hardware instalado.
- ¿Cuál es la diferencia entre sensores de "gravedad" y "aceleración" en Android?
- Problemas relacionados con el giroscopio con la orientación del dispositivo
- Detectar actividad del usuario (correr, andar en bicicleta, conducir) usando Android
- Confundido cómo usar Mockito para una prueba de Android
- Dibujo en el aire con el teléfono Android
¿Algún consejo, o debo apenas sostener mi respiración y rodar con mis compilaciones que requieren el servidor de la integración para estar disponible cuando las construcciones están sucediendo?
- Mockito con Robolectric: "ClassCastException se produjo al crear el proxy"
- Cómo consultar el MMS Iniciar sesión en Android
- Android: Uso del selector para establecer el color de fondo para la vista de imagen
- Obtención de ClassNotFoundException al ejecutar pruebas Robolectric con el complemento Maven surefire
- Prueba de un CursorLoader con Robolectric y Mockito
- ¿Cómo es posible que la aplicación Google Fit mide el número de pasos todo el tiempo sin drenar la batería?
De acuerdo con sus instrucciones de Maven todo lo que necesitas hacer es agregar robotium-solo
como una dependencia de compilación.
repositories { mavenCentral() } dependencies { instrumentTestCompile 'com.jayway.android.robotium:robotium-solo:4.2' }
Esto asegurará que tenga el archivo robotium-solo.jar
en su classpath. A continuación, defina las pruebas en el directorio src/instrumentTest
y ejecute gradle build
. ¿Ves si funciona?
Ayudaré donde pueda, ya que nos convertimos de maven a gradle hace un año.
* EDIT OP quería que las pruebas se ejecutaran por separado de una compilación gradle, por lo que la solución es especificar un conjunto de fuentes personalizadas de la siguiente manera:
sourceSets { integrationTest { // Gives you access to the compiled classes in your tests compileClasspath += main.output runtimeClasspath += main.output } } dependencies { integrationTestCompile 'com.jayway.android.robotium:robotium-solo:4.2' } // To run the tests: ./gradlew integrationTest task integrationTest(type: Test) { testClassesDir = sourceSests.integrationTest.output.classesDir classpath = sourceSets.integrationTest.runtimeClasspath }
Nota: No tengo el SDK de Android instalado en este equipo. Si main.output
no funciona, inténtelo con andriod.sourceSets.main.output
y compruebe si funciona.