La compatibilidad con la prueba de unidades Android no funciona en los módulos de la biblioteca de Android
Estoy escribiendo ensayos junit en el proyecto android usando la nueva unidad de soporte de prueba http://tools.android.com/tech-docs/unit-testing-support .
Mientras que las pruebas de unidad se ejecutan en el módulo 'com.android.application' perfectamente, pero siempre fallan en los módulos 'com.android.library'. Esto no se ha documentado en http://tools.android.com/tech-docs/unit-testing-support . Así que me pregunto si soy el culpable.
- JUnit en android
- Fragmento getActivity () devuelve null en la actividad JUnit test
- Android Studio No se puede resolver el símbolo 'Before' en import org.junit.Before
- Las pruebas consecutivas de Junit de Android no reflejan los datos reales de la base de datos subyacente
- Prueba de unidad MVP usando mockito con los oyentes de eventos
Cuando escribo esas pruebas en los módulos de la biblioteca, las pruebas no pueden encontrar las clases en el módulo y siempre da los siguientes errores:
package does not exist error: cannot find symbol
El soporte de la prueba de la unidad del androide está en la fase experimental ahora mismo, pero hay una solución a ella.
ACTUALIZAR
He añadido este problema a android issue tracker https://code.google.com/p/android/issues/detail?id=161038
- Proyecto de biblioteca de prueba autónoma no puede encontrar las clases de biblioteca
- ¿Es posible inyectar simulacros para realizar pruebas con AndroidAnnotations?
- Contexto de Android en pruebas de unidades que no son de actividad
- ¿Cómo puedo ejecutar una única prueba de Android con Kotlin?
- Android instrumentación prueba java.lang.UnsatisfiedLinkError en el uso de AndroidJunitRunner y AndroidJUnit4
- Prueba de unidad con Junit: prueba de recursos de red / bluetooth
- Android Marshmallow Permisos de Pruebas
- Prueba JUnit con Robolectric: java.lang.InstantiationException
Parece que la tarea de compilar las pruebas de unidad no depende de la tarea de compilar el código de la biblioteca. Lo siguiente lo arregló para mí:
afterEvaluate { tasks['assembleDebugUnitTest'].dependsOn(tasks['assembleDebug']) }
Hago las pruebas usando
./gradlew testDebug
Si no desea modificar su build.gradle
, especifique manualmente la tarea assembleDebug
en la línea de comandos también debe hacer el truco:
./gradlew assembleDebug testDebug
En mi proyecto de biblioteca de Android también no pude obtener las pruebas en ejecución. Lo que hice fue crear una aplicación de prueba que utiliza la biblioteca y escribió pruebas en la aplicación que llaman a los métodos de la biblioteca.
Esto podría no ser la solución ideal, pero fue la forma en que conseguimos que esto funcione.
Echa un vistazo aquí https://github.com/nenick/AndroidStudioAndRobolectric
Allí puede ejecutar pruebas de unidad en bibliotecas y sabores. Y no, no es necesario usar Robolectric como Gaurav Vashisth
declaró. Puedes si quieres.
A continuación se muestra un ejemplo de prueba JUnit en un módulo de biblioteca
- ¿Cuál es la versión de Android de TextArea de HTML?
- Mensaje de error al instalar la aplicación – INSTALACIÓN FALLADA