//의존관계를 갖는 객체를 파라미터로 전달 예제
/*
날짜값 처리 유틸리티
*/
//SUT 코드
public class DateHandler{
/*
* 현재시간을 (yyyy-MM-dd)로 조회
* @param provider
* @return
*/
public static String getCurrentTime(TimeProvider timeProvider) throws Exception {
Calendar c = null;
c = timeProvider.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(c.getTime());
}
}
//특정시간을 제공하는 DOC과 연결, 인터페이스를 통해 DI(의존성주입)
public Interface TimeProvider{
/*
* 특정시간을 제공
* @return 특정 시간
* @throws Exception
*/
Calendar getTime() throws Exception;
}
//테스트 코드
public class DateHandlerTest {
@Test
public void testGetCurrentTime() throws Exception{
String currentTime = DateHandler.getCurrentTime(new TimeProvider(){
public Calendar getTime() throws Exception{
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, 2014);
c.set(Calendar.MONTH, Calendar.JANUARY);
c.set(Calendar.DAY_OF_MONTH, 1);
return c;
}
});
assertEquals("2014-01-01", currentTime);
}
}