Estoy escribiendo un proyecto de biblioteca de Android basado en la clase de mapa de bits de Android (llámelo AndroindLib) que contiene solo la clase de utilidad (sin actividad). Intenté probarlo usando Android JUnit, pero sigue quejándose de que no puede encontrar el AnroidLib.apk
¿Cuál es la forma correcta de realizar una prueba unitaria del proyecto de biblioteca de Android?
Respuestas:
Citando la documentación :
"Hay dos formas recomendadas de configurar las pruebas en el código y los recursos en un proyecto de biblioteca:
Puede configurar un proyecto de prueba que instrumenta un proyecto de aplicación que depende del proyecto de la biblioteca. Luego puede agregar pruebas al proyecto para características específicas de la biblioteca.
Puede configurar un proyecto de aplicación estándar que dependa de la biblioteca y poner la instrumentación en ese proyecto. Esto le permite crear un proyecto autónomo que contiene tanto las pruebas / instrumentaciones como el código para probar ".
fuente
En su proyecto de prueba, simplemente cambie el nombre del paquete para que sea el mismo que el paquete de su biblioteca. Por ejemplo, tiene una biblioteca cuyo paquete es
"com.example.lib"
. Cree un proyecto de prueba dirigido a su biblioteca. En el archivo de manifiesto, verápackage="com.example.lib.test"
ytargetPackage="com.example.lib"
. Simplemente cambie el paquete de "com.example.lib.test" a "com.example.lib" (targetPackage
déjelo como está).Además, asegúrese de que la biblioteca esté referenciada a su proyecto de prueba NO en la ruta de compilación de Java, sino como una biblioteca de Android habitual: en Eclipse debe mostrarse como biblioteca en la
Project->Properties->Android
pestaña, pero no en laProject->Properties->Java Build Path
pestaña.Entonces haz tus pruebas.
fuente
http://www.paulbutcher.com/2010/09/android-library-project-with-tests-step-by-step/ ayuda a describir el proceso necesario para implementar la segunda sugerencia en la respuesta de CommonsWare
fuente
Según la documentación :
Probar un módulo de biblioteca es lo mismo que probar una aplicación. La principal diferencia es que la biblioteca y sus dependencias se incluyen automáticamente como dependencias del APK de prueba. Esto significa que el APK de prueba incluye no solo su propio código, sino también el AAR de la biblioteca y todas sus dependencias. Debido a que no hay una "aplicación bajo prueba" separada, la tarea androidTest instala (y desinstala) solo el APK de prueba. Al fusionar varios archivos de manifiesto, Gradle sigue el orden de prioridad predeterminado y fusiona el manifiesto de la biblioteca en el manifiesto principal del APK de prueba.
fuente
NOTA: Esta solución se basa en el uso de Eclipse Indigo (3.8.2) y es posible que deba implementarse de manera ligeramente diferente para otro IDE, aunque los principios básicos serán los mismos.
Tuve problemas similares y descubrí que lo siguiente siempre funciona:
( NOTA: Estas instrucciones son para crear un nuevo grupo de proyectos desde cero. Si ya ha creado partes del grupo de proyectos, es posible que deba modificar sus proyectos para que se conecten de la misma manera ) .
Debería terminar con tres proyectos (biblioteca de Android, aplicación de prueba de Android, probador de biblioteca de Android) que se parecen a esto:
Debería terminar con una clase para probar su biblioteca de Android que se parece a esto:
A continuación, puede agregar cualquier prueba que desee. No necesitará hacer referencia a la aplicación de prueba de Android ("RemingtonAndroidToolsTestApp" en este ejemplo) más para ejecutar sus pruebas a menos que requieran acceso a un componente específico de Android (como la carpeta de Activos, por ejemplo). Si necesita acceder a algún componente específico de Android, puede hacerlo modificando la aplicación de prueba de Android ("RemingtonAndroidToolsTestApp" en este ejemplo) y luego haciendo referencia a ella a través de la instrumentación proporcionada por la API estándar de Android Junit. (Puede leer más sobre eso aquí: http://developer.android.com/tools/testing/testing_android.html )
fuente
Si sus clases ulitiy no dependen de ningún código específico de Android, puede usar las pruebas unitarias estándar de JUnit. No es necesario utilizar las versiones de Android.
fuente