본문으로 바로가기
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