¿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.

¿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?

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.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.