私たちが直面している記述が難しい奇妙な問題であるため、以下の説明が意味を持ちます。hadsonまたはjodatimeのmavenで時折の日付またはタイムゾーンの不一致
私たちはhudsonでビルドされ、日付が使用され、アサートされたいくつかのユニットテストを含むmavenプロジェクトを持っています。 hudsonサーバーはsolaris上で動作します。現在では、単位テストで指定された時間から3.5時間が差し引かれ、開始が失敗したと主張するため、時々(30%のように)日付を使用した単体テストが失敗することがあります。他の70%はうまくいきますが、コード内で何も変わっていません。私たちはhudsonジョブを1時間に数回実行します。
私は時間を確認するためにユニットテストに次のコードを追加します。jodatimeや、昔ながらのカレンダーを使用している場合
@Test
public void testDate() {
System.out.println("new DateMidnight(2011, 1, 5).toDate();");
System.out.println(new DateMidnight(2011, 1, 5).toDate());
System.out.println(new DateMidnight(2011, 1, 5).toDate().getTime());
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2011);
cal.set(Calendar.MONTH, 0);
cal.set(Calendar.DAY_OF_MONTH, 5);
cal.set(Calendar.HOUR, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
System.out.println("cal.getTime();");
System.out.println(cal.getTime());
System.out.println(cal.getTime().getTime());
}
だから、基本的には同じことを印刷する必要があります。実行の70%でこれが当てはまります。私はプリントアウトを以下の取得、他の30%のために:
Running TestSuite
new DateMidnight(2011, 1, 5).toDate();
Tue Jan 04 21:30:00 MET 2011
1294173000000
cal.getTime();
Wed Jan 05 12:00:00 MET 2011
1294225200000
ので、カレンダーが正しい日付と時刻を保持しますが、jodatimeは3,5時間が差し引か。
ローカルのMavenテストは、この問題を引き起こすことは決してありません。その原因が何であるか把握できません。特に、コードやハドソンやサーバーの設定を変更することなくテストが合格しないことがあるという単一の理由を考えることはできません。
また、ユニットテストが2回実行されることを意味するcoberturaでmavenインストールを実行します。彼らはまた、彼らが最初に通過し、2回目に失敗するか、または2回失敗するか、どちらも失敗することも起こります。原因を突き止めるために任意の解決策やヒントについて
おかげで、
Stijn