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 回答