2014-04-24 5 views
0

나는 mybatis를 사용했으며,이 부분으로 데이터베이스 TIMESTAMP를 Java XMLGregorianCalendar 객체로 변환하기 위해 커스텀 핸들러 객체를 작성해야했다. 몇 가지 테스트를 마친 후 전환이 제대로 작동하지 않는 경우를 제외하고는 전환이 작동하는 것으로 보입니다.Unit Testing MyBatis Handler

올바르게 실행되도록하려면 변환 할 수있는 것을 증명하는 테스트가 있어야 변환을 처리 할 junit 테스트를 작성하려고합니다.

XMLGregorianCalendarHandler handler = new XMLGregorianCalendarHandler(); 

와 나는 getResults 방법을 사용하는지 테스트하기 위해 노력하고 있습니다 : 테스트에서

, 나는 다음과 같은 한 그러나

assertEquals(expectedDate , handler.getResult(rs, "timestamp")); 

, 내가 어떻게 "사실에 확실하지 않다 create "테스트 결과를 처리 할 수 ​​있도록 'rs'객체로 전달할 임시 ResultSet 객체를 만듭니다.

누구나 올바른 방향으로 나를 가리킬 수 있습니까? mybatis에 대한 객체 처리기를 테스트하는 방법에 대해서도 올바른 길을 걷고 있습니까?

실제 테스트 코드는 다음과 같습니다

@Test 
public void testConvertTimestamp() throws SQLException, DatatypeConfigurationException{ 
    String dbTimestamp = "24-APR-14 15.47.44.000000000"; 

    XMLGregorianCalendar expectedDate = null; 
    GregorianCalendar c = new GregorianCalendar(); 
    c.set(GregorianCalendar.DAY_OF_MONTH, 24); 
    c.set(GregorianCalendar.MONTH, GregorianCalendar.APRIL); 
    c.set(GregorianCalendar.YEAR, 2014); 

    c.set(GregorianCalendar.HOUR_OF_DAY, 15); 
    c.set(GregorianCalendar.MINUTE, 47); 
    c.set(GregorianCalendar.SECOND, 44); 
    c.set(GregorianCalendar.MILLISECOND, 000000000); 

    expectedDate = DatatypeFactory.newInstance().newXMLGregorianCalendar(c);   

    ResultSet rs;  

    assertEquals(expectedDate , handler.getResult(rs, RS_COLUMN_NAME)); 

} 

답변

0

는 결과 집합 모형을 만들 수있는 모의 라이브러리를 사용합니다. Mockito에서 이것은 다음과 같이 보일 수 있습니다 :

ResultSet rs = Mockito.mock(ResultSet.class); 

Mockito.when(resultSetMock.next()).thenReturn(true).thenReturn(false);  
Mockito.when(resultSetMock.getString(RS_COLUMN_NAME)).thenReturn(dbTimestamp);