Pruebas unitarias con Android Studio y Gradle?
¿Cómo puedo añadir fácilmente pruebas de unidad a mis proyectos de Android en Android Studio (IntelliJ)?
Para ser más exactos: Quiero agregar una carpeta con código de prueba (JUnit 4) y ejecutar las pruebas de unidad desde allí usando el JDK instalado regularmente (no en un emulador de Android). Hasta ahora he añadido las carpetas 'test / java /' a mi módulo y añadido 'prueba' como un conjunto de código fuente y junit como una dependencia de prueba:
- Actualizar Robolectric 2.4: Obtener error de etiqueta de aplicación para proyectos de biblioteca en eclipse
- Cómo escribir una prueba de unidad para un controlador de excepción de subprocesos no detectados.
- Diferencia entre el método runOnUiThread () y la anotación @UiThreadTest
- Robolectric's Shadow Object y Mocking
- Robolectric InflateException al usar el diseño de barra de acción personalizada
sourceSets { instrumentTest.setRoot('src/test') } dependencies { instrumentTestCompile 'junit:junit:4.+' // ... }
Cuando ahora seleccione Ejecutar 'Todas las pruebas' en la carpeta de prueba / java me da una excepción UnsupportedOperationException.
¿Qué me estoy perdiendo? ¿Cómo se ejecutan las pruebas de unidad para los proyectos de Android?
Puntos de bonificación para una recomendación de un plugin que funciona como 'Infinitest' en Eclipse – donde simplemente puedo guardar una clase y su prueba de unidad se ejecuta automáticamente. Todos los derechos reservados
PS: No quiero usar https://github.com/JakeWharton/gradle-android-test-plugin, ya que el complemento parece estar ya desaprobado.
- Cómo probar Menú
- Tratando de probar un módulo de Android en la aplicación MultiDex, com.android.test.runner.MultiDexTestRunner no se reconoce
- Unidad de pruebas de aplicaciones de Android en Eclipse + jUnit - Prueba de ejecución falló: Prueba de ejecución incompleta. Se esperan 1 pruebas, recibidas 0
- AndroidManifest en el directorio androidTest que se ignora
- ¿Qué probar con Robolectric?
- ¿Hay una manera de iniciar el emulador de Android en Travis CI construir?
- ¿Cómo volver a ejecutar la prueba fallada en Espresso? - lluvia de ideas
- Prueba de unidad de Android no se burla
Creo que la respuesta debería ser ya en Android Studio 1.1 (y actual gradle plugin). Presentaron el soporte de prueba de unidad. Todavía es experimental, pero menos que nuestros esfuerzos anteriores aquí 🙂 Vea aquí .
He pasado las últimas semanas (también) en eso. En realidad, en eso en los esteroides, ya que también tuve que poner Robolectric en la olla.
Respuesta corta: a menos que confunda ese error con otra cosa, creo que está intentando ejecutar pruebas de unidad con el testrunner de Android.
Respuesta larga: terminé con el complemento obsoleto (después de probarlo, y luego tratando de poner las pruebas en la carpeta androidTest), ya que resolvió bastante algunos problemas en Jenkins para mí. La desventaja es que no reconoce la carpeta misma como código java o android, por lo que la terminación de código funciona con todo, excepto el contenido de la carpeta (por ejemplo, ve correctamente el proyecto base y todas las dependencias).
Lo que tenía que hacer para ejecutarlo en Android Studio era crear un testrunner JUnit (no Android). No funcionará fuera de la caja probablemente, porque la orden del classpath está desordenada (aunque funciona muy bien ejecutando simplemente las pruebas en gradle).
Básicamente los pasos manuales que tuve que hacer son:
- Ejecute junit testrunner para ver la línea de comandos utilizada por AS
-
Edite el argumento
-classpath
haciendo lo siguiente:- Mover junit> 3.8 en la parte superior de la cadena (supongo que porque de lo contrario obtendrá el de android, que es demasiado viejo)
- Mover robolectric como segundo si lo referencia, de lo contrario se verán métodos androides reales antes de los robolectric
- Agregue la ruta de salida de las clases de prueba al final, por lo que encontrará sus pruebas (recuerde terminar las clases de prueba con 'Test' de lo contrario no se encontrarán)
-
Añada el
-classpath
que acaba de crear a las opciones VM de runner después de-ea
(he encontrado esta solución, o partes de ella, en muchos lugares, una muy buena es: http://kostyay.name/android-studio-robolectric- Gradle-getting-work / y se aplica también a pruebas unitarias sencillas).
Una alternativa que no he intentado pero he considerado ha sido sugerida esta mañana (ver último post): https://groups.google.com/forum/#!topic/adt-dev/Y8-ppkWell0
Tengo un montón de conocimientos dispersos en este momento debido a los muchos problemas que he descubierto debido a la previsualización de SW y las toneladas de información que tenía que pasar a través de resolverlos, pero si tiene más tema específico sobre el tema, sólo házmelo saber: )
- Aplicación para móviles: orientada a iPhone, WP7, Android y Blackberry
- Máquina que puede girar el teléfono 90 grados cada pocos segundos?