0

私は単体テストを書いています.SQLサーバーの日付との間の奇妙な変換の問題によりjava.util.Date、実際の日付と予想される日付をテストすると、一貫して0〜2ミリ秒ずれています。

これらの日付が互いにわずか数ミリ秒以内であると断言するにはどうすればよいでしょうか?

def currentTime = new Date()

dao.recordLogin(currentTime)

def actual = dao.getLastLogin()

expect: actual == new java.sql.Timestamp(currentTime.time)

/*
  actual == new Timestamp(currentTime.time)
  |      |  |             |           |
  |      |  |             |           1381332920392
  |      |  |             Wed Oct 09 11:35:20 EDT 2013
  |      |  2013-10-09 11:35:20.392
  |      false
  2013-10-09 11:35:20.393
*/

コード例を比較的単純にしようとしました。もっと欲しいかどうか教えてください。

4

2 に答える 2

1

データベースへの挿入中に java.util.Date を java.sql.Timestamp に変換しようとしている方法がわかりません。相互の変換をテストするためだけに非常に簡単なテストを書きましたが、うまくアサートしているようです..ここに私が書いたテストがあります..

    @Test
    public void dateTest() {

        java.util.Date utilDate = new java.util.Date();
        java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());

        assertEquals(utilDate.getTime() , sqlDate.getTime());

    }

    @Test
    public void timestampTest() {

        java.util.Date utilDate = new java.util.Date();
        java.sql.Timestamp timestamp = new java.sql.Timestamp(utilDate.getTime());

        assertEquals(utilDate.getTime() , timestamp.getTime());

    }

    @Test
public void timestampToUtilDateTest() {

    java.util.Date utilDate = new java.util.Date();
    java.sql.Timestamp timestamp = new java.sql.Timestamp(utilDate.getTime());
    java.util.Date utilDateFromTimestamp = new java.util.Date(timestamp.getTime());


    assertEquals(utilDateFromTimestamp.getTime() , timestamp.getTime());

}

お役に立てば幸いです。ありがとうマニシャ

于 2013-10-09T16:28:16.957 に答える
1

ミリ秒の値を取得し、差が数ミリ秒未満かどうかを確認します。

assertTrue("Login takes too long", Math.abs(currentTime.getTime() - actual.getTime()) < 5L);
于 2013-10-09T16:28:18.490 に答える