programacion - Cómo probar un proyecto de biblioteca de Android
manual de programacion android pdf (6)
Citando la documentación :
"Hay dos formas recomendadas de configurar las pruebas de código y 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. A continuación, 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 contenga tanto las pruebas / instrumentaciones como el código para probar ".
Estoy escribiendo un Android Library Project basado en la clase de mapa de bits de Android (llámalo AndroindLib) que contiene solo la clase de utilidad (sin actividad). Traté de probarlo usando Android JUnit, pero sigue quejándose de que no puede encontrar el AnroidLib.apk
¿Cuál es la forma correcta de probar Unit Project Android Library?
Por la documentation :
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 de la prueba APK. 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. Como no hay una "aplicación bajo prueba" por separado, la tarea androidTest instala (y desinstala) solo la prueba APK. Al fusionar varios archivos de manifiesto, Gradle sigue el orden de prioridad predeterminado y fusiona el manifiesto de la biblioteca en el manifiesto principal de la APK de prueba.
Si sus clases ulitiy no dependen de ningún código específico de Android, puede usar las pruebas estándar de la unidad JUnit. No es necesario usar las versiones de Android.
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
NOTA: Esta solución se basa en el uso de Eclipse Indigo (3.8.2) y podría tener que implementarse de forma ligeramente diferente para otro IDE, aunque los principios básicos serán los mismos.
Tuve problemas similares y descubrí que hacer lo siguiente siempre funciona:
( NOTA: Estas instrucciones son para construir un nuevo grupo de proyectos desde cero. Si ya ha creado partes del grupo de proyectos, entonces deberá modificar sus proyectos para que se conecten de la misma manera ) .
- Cree un nuevo proyecto de biblioteca de Android marcando la casilla "Es Biblioteca" durante la creación. (por ejemplo, un proyecto de Android llamado "RemingtonAndroidTools").
- Cree el proyecto de la biblioteca Android y verifique que haya creado un archivo jar en la carpeta bin. (por ejemplo, un archivo jar llamado "RemingtonAndroidTools.jar").
- Cree un proyecto de Android vacío para probar la aplicación de Android que servirá como una aplicación de prueba de Android. (Por ejemplo, un proyecto de Android llamado "RemingtonAndroidToolsTestApp"). No necesitará modificar el código fuente o los recursos del proyecto de la aplicación de prueba de Android a menos que tenga algo que deba agregarse para la prueba. Se pueden probar muchas cosas sin modificaciones al Android App App Project. El proyecto Android Test App es un puente entre su proyecto de biblioteca Android y el proyecto Android Junit que hace posible la prueba del proyecto de la biblioteca Android a través de Android Junit.
- Vaya a la pestaña Biblioteca de Java Build Path para el proyecto Android Test App ("RemingtonAndroidToolsTestApp" en este ejemplo).
- Agregue el archivo jar ("RemingtonAndroidTools.jar" en este ejemplo) del Android Library Project ("RemingtonAndroidTools" en este ejemplo) a través del botón "Agregar tarros ...".
- Cree un nuevo proyecto de prueba de Android (por ejemplo, "RemingtonAndroidToolsTester") que servirá como un analizador de biblioteca de Android y seleccione el proyecto de Android Test App ("RemingtonAndroidToolsTestApp" en este ejemplo) como objetivo.
- Vaya a la pestaña Biblioteca de Java Build Path para el proyecto Android Library Tester ("RemingtonAndroidToolsTester" en este ejemplo).
- Agregue el archivo jar ("RemingtonAndroidTools.jar" en este ejemplo) del Android Library Project ("RemingtonAndroidTools" en este ejemplo) a través del botón "Agregar tarros ...".
- Encuentre la última carpeta de su paquete de Android en el proyecto Android Library Tester ("danny.remington.remington_android_tools_test_app.test.test", por ejemplo) y agregue una clase de prueba ("MainActivityTest", por ejemplo) que hereda de ActivityInstrumentationTestCase2.
- Edite la clase de prueba ("TestActivityTest" en este ejemplo) para usar la actividad (por ejemplo "TestActivity") de la aplicación de prueba de Android ("RemingtonAndroidToolsTestApp" en este ejemplo) como el parámetro para ActivityInstrumentationTestCase2.
- Edite la clase de prueba ("TestActivityTest" en este ejemplo) y cree un constructor predeterminado que haga una llamada a super (Clase) y pase en la clase de la Aplicación de prueba de Android ("TestActivity.class", por ejemplo).
Deberías terminar con tres proyectos (Android Library, Android Test App, Android Library Tester) que se parecen a esto:
Deberías terminar con una clase para probar tu biblioteca de Android que se parece a esto:
package danny.remington.remington_android_tools_test_app.test;
import android.test.ActivityInstrumentationTestCase2;
import danny.remington.remington_android_tools_test_app.TestActivity;
/**
*
*/
public class TestActivityTest extends
ActivityInstrumentationTestCase2<TestActivity> {
public TestActivityTest() {
super(TestActivity.class);
}
}
A continuación, puede agregar cualquier prueba que desee. No será necesario que haga referencia a la aplicación de prueba de Android ("RemingtonAndroidToolsTestApp" en este ejemplo) para ejecutar sus pruebas a menos que requieran acceso a un componente específico de Android (como la carpeta Activos, por ejemplo). Si necesita acceder a cualquier 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 esto aquí: http://developer.android.com/tools/testing/testing_android.html )
En su proyecto de prueba, simplemente cambie el nombre del paquete para que coincida con el paquete de su biblioteca. Por ejemplo, tiene una biblioteca cuyo paquete es "com.example.lib"
. Crea un proyecto de prueba dirigido a tu biblioteca. En el archivo de manifiesto, verá package="com.example.lib.test"
y targetPackage="com.example.lib"
. Simplemente cambie el paquete de "com.example.lib.test" a "com.example.lib" ( targetPackage
leave as is).
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 Project->Properties->Android
pestaña Project->Properties->Android
, pero no en Project->Properties->Java Build Path
pestaña Project->Properties->Java Build Path
.
Luego ejecuta tus pruebas.