我們正在處理大量數據,所有數據都以UTC標記(以Java表示)。在讀取這些數據之間,將其存儲在數據庫中並再次將其發佈出去,結果發生了一些數據在夏令時期間關閉了一個小時的情況。由於UTC沒有夏令時的概念,這顯然是軟件中的一個錯誤。一旦知道,它很容易修復。然而,不管當前時間差如何,都可以使用一些單元/集成測試 - 例如,我想更改本地時區並在這些不同的時區內反覆運行一些方法,以確保UTC正確處理。測試正確的時區處理
由於測試應該自動運行,並且 - 最好 - 在一個TestSuite中,我想知道如何最好地測試正確的行爲。在重啓JVM時很容易改變像時區這樣的本地設置,但在測試套件中運行並不那麼容易。
有沒有人知道支持這種情況的測試環境,庫或模式?我們通常使用JUnit,但是如果它有助於擺脫這樣的問題,則可以添加其他環境/技術。我想這是一個整合而不是單元測試。
編輯:已經有兩個非常有用的答案,但我想必須有更多的技術。有沒有人有關於何時/經常調用TimeZone.getDefault的權威信息(請參閱Jon Skeets答案的評論)?
注意:即使這個問題有一個公認的答案,我不完全確定,接受哪個答案。即使有了這種接受,我希望看到更多的想法和技巧。
感謝您的輸入!
想了解更多的想法和技巧,你可以查看關於Java時區警告的個人文章:http://tshikatshikaaa.blogspot.nl/2012/09/about-java-timezone-and-calendar-caveats.html。要獲得每個時區周圍世界的當前時間,請查看:http://yourworldclocks.juplo.com/希望這有助於您! – JVerstry 2013-01-26 12:58:00