Estamos trabajando con grandes cantidades de datos, todos etiquetados en UTC (en Java). Entre la lectura de estos datos, el almacenamiento en una base de datos y su recuperación, sucedió que algunos datos se desactivaron durante una hora durante el horario de verano. Como UTC no tiene ningún concepto del horario de verano, este fue claramente un error dentro del software. Una vez conocido, es fácil de arreglar.Prueba del manejo correcto de la zona horaria
Sin embargo, sería bueno tener algunas pruebas de unidad/integración que funcionen independientemente de la diferencia horaria actual, p. Ej. Me gustaría cambiar la zona horaria local y ejecutar algunos métodos una y otra vez dentro de estas diferentes zonas horarias para asegurarme de que UTC se maneja correctamente.
Como las pruebas deben ejecutarse automáticamente y, preferiblemente, dentro de un Testsuite, me pregunto cuál es la mejor manera de comprobar el comportamiento correcto. Sería fácil cambiar la configuración local, como la zona horaria, al reiniciar la JVM, pero ejecutarla dentro de un banco de pruebas no es tan fácil.
¿Alguien sabe de un entorno de prueba, una biblioteca o un patrón compatible con este escenario? Usualmente estamos trabajando con JUnit, pero estamos abiertos a agregar otro entorno/técnica si ayuda a deshacerse de problemas como este. Supongo que es más bien una prueba de integración que de unidad.
Editar: Ya hay dos respuestas muy útiles, pero creo que debe haber más técnicas. ¿Alguien tiene información autorizada sobre cuándo/con qué frecuencia se llamará TimeZone.getDefault (ver los comentarios sobre las respuestas de Jon Skeets)?
Nota: Aunque esta pregunta tiene una respuesta aceptada, no estaba del todo seguro, qué respuesta aceptar. Incluso con esta aceptación, me gustaría ver más ideas y técnicas.
¡Gracias por su contribución!
Para obtener más ideas y técnicas, puede consultar una publicación personal sobre las advertencias de zona horaria de Java en: http://tshikatshikaaa.blogspot.nl/2012/09/about-java-timezone-and-calendar-caveats.html. Para obtener la hora actual del mundo por zona horaria, consulte: http://yourworldclocks.juplo.com/ ¡Espero que esto ayude! – JVerstry