Wir arbeiten mit großen Datenmengen, die alle in UTC (in Java) getaggt sind. Zwischen dem Lesen dieser Daten, dem Speichern in einer Datenbank und dem erneuten Abrufen der Daten war es möglich, dass einige Daten während der Sommerzeit eine Stunde verließen. Da UTC kein Konzept der Sommerzeit hat, war dies eindeutig ein Fehler in der Software. Sobald es bekannt ist, ist es leicht zu beheben.Testen der korrekten Zeitzonenbehandlung
Es wäre jedoch nett, einige Einheits-/Integrationstests zu haben, die ungeachtet des aktuellen Zeitunterschieds funktionieren - z. Ich möchte die lokale Zeitzone ändern und einige Methoden innerhalb dieser verschiedenen Zeitzonen immer wieder ausführen, um sicherzustellen, dass UTC korrekt behandelt wird.
Da die Tests automatisch und - vorzugsweise - innerhalb einer Testsuite laufen sollten, frage ich mich, wie man am besten auf korrektes Verhalten testet. Es wäre leicht, beim Neustart der JVM lokale Einstellungen wie die Zeitzone zu ändern, aber das Ausführen in einer Testsuite ist nicht so einfach.
Kennt jemand eine Testumgebung, eine Bibliothek oder ein Muster, die dieses Szenario unterstützen? Wir arbeiten normalerweise mit JUnit, sind aber offen für das Hinzufügen einer anderen Umgebung/Technik, wenn es hilft, Probleme wie diese zu beseitigen. Ich nehme an, dass es eher ein Integration-als-Unit-Test ist.
bearbeiten: Es gibt bereits zwei sehr hilfreiche Antworten, aber ich denke, es muss da draußen mehr Techniken sein. Hat jemand maßgebliche Informationen darüber, wann/wie oft TimeZone.getDefault aufgerufen wird (siehe Kommentare zu Jon Skeets Antworten)?
Hinweis: Obwohl diese Frage eine akzeptierte Antwort hat, war ich nicht ganz sicher, welche Antwort zu akzeptieren. Auch mit dieser Akzeptanz würde ich gerne mehr Ideen und Techniken sehen.
Vielen Dank für Ihre Eingabe!
Für weitere Ideen und Techniken, können Sie einen persönlichen Beitrag über Java Zeitzone Einschränkungen unter: http://tshikatshikaaa.blogspot.nl/2012/09/about-java-timezone-and-calendar-caveats.html. Um die aktuelle Zeit um die Welt pro Zeitzone zu erfahren, klicke auf: http://yourworldclocks.juplo.com/ Hoffe das hilft! – JVerstry