728x90
반응형
SMALL
TestCal 클래스
TestCal 클래스에 평일을 구하는 메소드가 있으며 이것을 테스트 해보겠다.
public class TestCal{
//주어진 기간의 총 평일수를 구하는 함수
public Long calculateWeekDays(Date StartDate, Date EndDate){
//System.out.println("함수로 들어온 시작일: "+StartDate);
//System.out.println("함수로 들어온 종료일: "+EndDate);
Calendar startDate = Calendar.getInstance(); // 작업 시작일 (START_DATE)
Calendar endDate = Calendar.getInstance(); // 작업 종료일 (END_DATE)
Calendar addDate = Calendar.getInstance(); // 시작일~종료일 사이의 주말을 제외하기 위한 계산용 날짜
long workingDays = 0; // 시작일 ~ 종료일 사이의 평일수 (=TOTAL_DATE)
startDate.setTime(StartDate);
addDate.setTime(StartDate);
endDate.setTime(EndDate);
// 주말을 제외한 총 기간 구하기
while (!addDate.after(endDate)) {
int day = addDate.get(Calendar.DAY_OF_WEEK);
if ((day != Calendar.SATURDAY) && (day != Calendar.SUNDAY)) {
workingDays++; // 평일 수
}
addDate.add(Calendar.DATE, 1);
}
//LOGGER.info("주말 제외 총 기간 : " + workingDays);
return workingDays;
}
}
아래 형식대로 사용하자
Test test = new Test();
Method method = Test.class.getDeclaredMethod("{메소드명}", {인수1}, {인수2}...);
method.setAccessible(true);
int actual = ({반환하는 형}) method.invoke(<인스턴스>, {인수1}, {인수2}...);
getDeclaredMethod() 를 이용하여 원하는 클래스의 해당 메소드를 가져온다.
반환된 메소드를 외부에서도 엑세스 할 수 있도록 setAccessible(true)를 설정한다.
method.invoke() 로 테스트 메소드를 실행한다.
CreateBeforeWeekReportTest
public class CreateBeforeWeekReportTest {
@Test
public void 날짜사이의_평일_테스트() throws Exception{
CreateBeforeWeekReport create = new CreateBeforeWeekReport();
Method method = create.getClass().getDeclaredMethod("calculateWeekDays", Date.class,Date.class);
method.setAccessible(true);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String start = "2021-11-01";
String end = "2021-11-07";
Date start_date = (Date) format.parse(start);
Date end_date = (Date) format.parse(end);
Long result = (Long) method.invoke(create,start_date, end_date);
Long test = (long) 5;
assertEquals(test, result);
}
}
728x90
반응형
LIST
'나의 주니어 개발 일기 > 테스트 코드' 카테고리의 다른 글
[스프링]26. junit4 테스트코드 작성하기 (0) | 2021.11.10 |
---|