我正在编写单元测试,并且由于SQL服务器日期与java.util.Date
之间存在一些奇怪的转换问题,当我测试实际和预期日期时,它们始终为0-2ms。
我如何断言这些日期在彼此之间只有几毫秒?
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
*/
试图保持代码示例相对简单。 Lemme知道你是否想要更多。
答案 0 :(得分: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());
}
我希望它有所帮助。 谢谢 MANISHA
答案 1 :(得分:1)
只需取毫秒值并检查差异是否小于几毫秒:
assertTrue("Login takes too long", Math.abs(currentTime.getTime() - actual.getTime()) < 5L);