Pruebas unitarias y joda-time-android
Utilicé las clases de la biblioteca de joda-time-android
en mi clase Presenter
y no debe tener ninguna dependencia de Android. Así que no puedo probarlo correctamente. Sé que puedo usar Robolectric
para esto, pero quiero mantenerme fuera de esta herramienta y mi Presenter
limpio. ¿Debo abandonar JodaTime? ¿Alguna otra solución?
- ¿Cómo manejar las diferencias de la base de datos de horarios de JodaTime y Android?
- "Recurso no encontrado" al crear una aplicación para Android en IntelliJ 9.0 Maia Public Beta
- Uso de la biblioteca Joda-Time para convertir la cadena al formato DateTime en Google Tasks API
- ProGuard no compiló con Joda Time utilizado en Windows
- Hora de Joda y error de ProGuard al exportar .apk
- No se puede generar APK firmado con proguard habilitado cuando se usa Joda Time
- Jodatime cómo saber si el horario de verano está en
- Problemas con zona horaria incorrecta en Android
- Cómo escribir y leer org.joda.time.Date en la clase Parcelable
- Cómo obtener el formato de fecha de configuración regional en mes y día
- Separar horas de minutos en un valor de tiempo dado
- Intervalo de tiempo límite en el selector de tiempo
- JodaTime - Compruebe si LocalTime es después de ahora y ahora antes de otro LocalTime
Para Unit-tests
podemos usar la implementación java por defecto de la biblioteca JodaTime
porque tiene el mismo paquete y clases como joda-time-android
.
// for android compile 'net.danlew:android.joda:2.9.3' // joda-time for tests testCompile 'joda-time:joda-time:2.9.3'
Funciona de maravilla.
Para otros casos con otras bibliotecas, vea la respuesta de @npace .
Bueno, joda-time-android
depende del tiempo de ejecución de Android para poder trabajar. Usar Robolectric
para esto parece un buen caso de uso, ya que no estarás interactuando con Fragment
, Activity
y otras clases de interfaz de usuario del SDK de Android.
Dado que la configuración de Robolectric
es una especie de dolor, hay otra opción: puede utilizar el patrón de adaptador para crear una interfaz común para la biblioteca de tiempo Java Joda regular y la versión de Android.
Si eso es posible y práctico (dependiendo de cuánto de la API de tiempo Joda que desee utilizar), puede volver su Adapter
con joda-time-android
cuando se ejecuta la aplicación, y volver con joda-time
cuando se ejecutan las pruebas de unidad. Me imagino que puedes hacer que use la implementación concreta de Android desde el método onCreate()
de tu Application
y la implementación concreta de Java desde la prueba de tu unidad, @Before
, por ejemplo.
- Error en Manifest.xml al agregar PACKAGE_USAGE_STATS
- No se puede mostrar el tiempo unix obtenido en textView