2015-04-28 2 views
1

Я вычитаю 500 hours из Дата календаря и мой метод дает разницу в часах.Утверждение об отказе для вычисления разницы в часах

Почему это утверждение ниже?

Метод испытания:

public long dataFetchTotalTime(long time) { 
     long hours = 0; 
     Calendar ackCal = Calendar.getInstance(); 
     long diff = ackCal.getTime().getTime() - time; 
     hours = TimeUnit.HOURS.convert(diff, TimeUnit.MILLISECONDS); 
     return hours; 
    } 

Test Case: Трассировка

@Test 
public void checkFetchTimeDiff() 
{ 
    long expected = 500; 
    Client client = new Client(); 
    Calendar ackCal = Calendar.getInstance(); 
    ackCal.set(Calendar.HOUR_OF_DAY, -500); 
    long actual = client.dataFetchTotalTime(ackCal.getTime().getTime()); 
    Assert.assertEquals(expected, actual); 
} 

Ошибка:

java.lang.AssertionError: expected:<500> but was:<514> 
    at org.junit.Assert.fail(Assert.java:88) 
    at org.junit.Assert.failNotEquals(Assert.java:834) 
    at org.junit.Assert.assertEquals(Assert.java:645) 
    at org.junit.Assert.assertEquals(Assert.java:631) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 

ответ

0

Это было ошибка:

ackCal.set(Calendar.HOUR_OF_DAY, -500); 

Метод испытания:

public long dataFetchTotalTime(long time) { 
     long hours = 0; 
     Calendar ackCal = Calendar.getInstance(); 
     long diff = ackCal.getTime().getTime() - time; 
     hours = TimeUnit.HOURS.convert(diff, TimeUnit.MILLISECONDS); 
     return hours; 
    } 

Test Case:

@Test 
public void checkFetchTimeDiff() 
{ 
    long expected = 500; 
    Client client = new Client(); 
    Calendar ackCal = Calendar.getInstance(); 
    ackCal.add(Calendar.HOUR_OF_DAY, -500); 
    long actual = client.dataFetchTotalTime(ackCal.getTime().getTime()); 
    Assert.assertEquals(expected, actual); 
}