studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones android unit-testing gradle android-studio

para - manual de programacion android pdf



Configuración de un directorio de activos personalizado para pruebas de unidad en Android Studio (3)

Tenemos el requisito común de ejecutar pruebas unitarias de nuestra aplicación de Android que utilizan los activos que solo se requieren para las pruebas unitarias.

Con el SDK basado en Eclipse esto era simple y obvio: el proyecto de prueba era un proyecto separado con su propia carpeta de activos. Con Android Studio, se supone que es algo que se configura en build.gradle (o por convención).

Finalmente, nuestras pruebas de unidad se están ejecutando, pero he agotado todas las sugerencias que he encontrado en relación con una carpeta de activos personalizada (e, idealmente, combinada). Esto es lo que he intentado:

  • Agregar un cierre de prueba a sourceSets dentro del cierre de Android (por cierre me refiero a lo que está entre las llaves en build.gradle).

    androidTest { assets.srcDirs = [''src/androidTest/assets/''] }

  • Lo mismo, pero con "test" como el nombre de sourceSet (a diferencia de "androidTest", arriba) y también con "instrumentTest".

  • Varias combinaciones de los anteriores, más androidTest.setRoot ("test"), androidTest.setRoot ("androidTest"), que hacen que nuestras pruebas unitarias no sean reconocidas ("suite vacía").

Esta pregunta podría plantearse de forma más general como "cómo se emplean diferentes directorios para las pruebas unitarias en Android Studio".

Hemos revisado la documentación de Android y no lo entendemos, está mal o hay un error en alguna parte.

Cualquier ayuda sería muy apreciada.


Estoy usando Android Studio 1.3 + Gradle 1.2.3 y src / androidTest / asset no funcionó para mí. Coloqué todo en src / debug sin ningún cambio en build.gradle y funcionó. Aparentemente, Android recoge los elementos de la carpeta de depuración automáticamente mientras crea la apk.


Me encontré con una respuesta para mi propia pregunta, por la cual obtuve el codiciado premio "Tumbleweed" reservado para preguntas que inspiran una falta de interés particularmente notable. Sin embargo, puede ser útil para alguien.

Al final, voy a describir esto como un error en la construcción de Gradle de Android, pero en ausencia de cualquier documentación concluyente, tendrá que seguir siendo una opinión.

Parece que "androidTest / asset" simplemente no funciona. Sin embargo, "depuración / activos" hace. Lo mismo ocurre con "debug / java", por lo que la solución es poner todos los recursos de prueba y el código en la raíz de depuración, con la excepción de las pruebas de unidad en sí mismas.

También agregué las siguientes modificaciones a mi build.gradle:

androidTest { assets.srcDirs = [''src/main/assets'', ''src/androidTest/assets/'', ''src/debug/assets/''] java.srcDirs = [''src/main/java'', ''src/androidTest/java'', ''src/debug/java''] }

Y ahora tengo pruebas de unidad en funcionamiento que emplean activos y simulacros que son desconocidos para la versión de lanzamiento.


No sé cómo era antes, pero pude crear pruebas unitarias instrumentadas de Android donde puedo leer activos de prueba o activos de producción. Ver this respuesta para más información.