ローカルテストデータベースの行に一定のタイムスタンプを書き込み、それを読み戻して予想したものと比較するJavaのunit testがあります。これは、GMTのタイムゾーンの下にある私のローカルのラップトップ上で正常に動作します。ローカルとリモートデータベースTimeZoneの違いテストの違い
私たちの継続的インテグレーションサーバーにコードをコミットすると、テストは-5時間ごとに異なる時間で失敗します。統合サーバーは米国東海岸のAWSでホストされているので、これは驚くことではありません。しかし、それは問題を引き起こしています...
私のローカルMySQLサーバをリモートサーバと同じタイムゾーンに変更するのは短く(私のチームのすべての開発者にも同様です)、どのようにあまりにもハッキリになってしまうことなく、この問題をコードで修正してください。
//Fetch actual table contents
IDataSet databaseDataSet = databaseTester.getConnection().createDataSet();
ITable actualTable = databaseDataSet.getTable("batch");
// Load expected data from an XML dataset
IDataSet expectedDataSet = new XmlDataSet(getClass().getResourceAsStream("/dbunit/expected_insert_batch.xml"));
ITable expectedTable = expectedDataSet.getTable("batch");
// Assert actual database table match expected table
Assertion.assertEquals(expectedTable, actualTable);
OSのタイムゾーンとは別の、または個々のDBセッションのMySQLサーバーのおかげで、
タイムスタンプを整数としてどのように比較すればよいでしょうか?文字列として? – Guillaume
はい、単位テストの詳細を表示してください:) –
タイムスタンプ比較はDBUnitによって行われています – Scruffers