質問

私たちは、大量のデータ、(Javaで)UTCでタグ付けされたすべてで作業しています。 、このデータを読んで、それをデータベースに保存し、再びそれを抜け出すの間に、いくつかのデータは、夏時間の間、1時間オフだったこと、起こりました。 UTCは夏時間時間の概念がないので、これは明らかにソフトウェア内のバグでした。知られたら、それは修正するのは簡単です。

しかし、関係なく、現在の時間差の仕事いくつかのユニット/統合テストを持っていることは素晴らしいことだ - 例えば私は、ローカルタイムゾーンを変更し、UTCが正しく処理されていることを確認するために、これらの異なるタイムゾーンの中に何度も繰り返し、いくつかの方法を実行したいと思います。

のテストが自動的に実行されなければならないとして - 好ましくは - 1テストスイートの中に、私は思ったんだけどどのように正しい行動のための最高のテストへ。 JVMを再起動すると、タイムゾーンなどのローカル設定を変更することが容易ではなく、テストスイートの中にこれを実行すると、それは容易ではありませんと思います。

誰もがこのシナリオをサポートするテスト環境、ライブラリやパターンを知っていますか?我々は通常のJUnitでの作業が、それはこのような問題を取り除く場合に役立ちます別の環境/技術を追加するための開かれています。私はそれがむしろユニットテストよりも統合 - だと仮定します。

編集:2つのがあり非常に参考答えはすでにありますが、私はそこに複数の技術がなければならないと思います。誰もが/はTimeZone.getDefaultが呼び出される頻度(ジョンSkeetsが答えるのコメントを参照してください)時期について信頼できる情報を持っていますか?

:この質問は受け入れ答えを持っているにもかかわらず、私は受け入れるように答えている、完全に確認されませんでした。これでも受け入れて、私はより多くのアイデアやテクニックを見てみたいと思います。

あなたの入力をありがとう!

役に立ちましたか?

解決

私は/あなたが日付の管理を支援するためにいくつかの砂糖を提供する JodaTime にチェックアウトをお勧めします時間/タイムゾーンの種類は、あなたのコード内で、より読みやすく発行します。

私たちは、それが日付/時刻の問題のためのネイティブJava APIは、比類のないです後押しどのので、テストおよび生産全体でこれらを使用します。テストでこれらを使用すると、JUnitの中に正常に動作します。

他のヒント

のJavaを使用すると、デフォルトのタイムゾーン(java.util.TimeZone.setDefault)を設定することができます。異なるさまざまなオプションにタイムゾーンを設定し、すべてがまだ動作していることを確認する前に、私がテストを書いています。しかし注意してください - あなたのユニットテストのほとんどをparallelisingしている場合、あなたはこれらのものは、シーケンシャルにする必要があります。

私はあなたが適用され、いくつかのなしに夏時間にいくつかのタイムゾーンでテストをお勧めします。 DSTは、北半球に今年の反対時に適用されるオーストラリアのタイムゾーンを使用すると、同様に良いです。

タイムサーバに接続し、アップデートを得ることについての意見は何ですか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top