Java
TDD 예제(DateCalculator)
h_jinnny
2024. 3. 18. 21:37
DateCalculator 클래스가 가지는 메서드
- calculateAge : 주어진 생년월일을 기반으로 현재 날짜와 비교하여 나이를 계산합니다.
- calculateDaysBetween : 두 날짜 사이의 일 수를 계산합니다.
- isLeapYear : 주어진 연도가 윤년인지 여부를 판단합니다.
1. 테스트 케이스 작성
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import java.time.LocalDate;
public class DateCalculatoyTest {
private DateCalculator dateCalculator;
@BeforeEach
void setUp(){
dateCalculator = new DateCalculator();
}
@Test
@DisplayName("나이 구하기")
void calculateAge() {
LocalDate birthDate = LocalDate.of(1999,12,11);
LocalDate currentDate = LocalDate.of(2024,3,18);
int expectedAge = 25;
int actualAge = dateCalculator.calculateAge(birthDate, currentDate);
assertEquals(expectedAge, actualAge);
}
@Test
@DisplayName("두 날짜 사이의 일 수")
void calculateDaysBetween() {
LocalDate startDate = LocalDate.of(2024, 2, 15);
LocalDate endDate = LocalDate.of(2024, 3,1);
int expectedDays = 15;
int actualDays = dateCalculator.calculateDaysBetween(startDate, endDate);
assertEquals(expectedDays, actualDays);
}
@Test
@DisplayName("윤년 여부")
void isLeapYear() {
int leapYear = 2024;
boolean isLeap = dateCalculator.isLeapYear(leapYear);
assertEquals(true, isLeap);
}
}
2. 구현 코드 작성
import java.time.LocalDate;
public class DateCalculator {
public int calculateAge(LocalDate birthDate, LocalDate currentDate) {
return currentDate.getYear() - birthDate.getYear();
}
public int calculateDaysBetween(LocalDate startDate, LocalDate endDate) {
return (int) startDate.until(endDate).getDays();
}
public boolean isLeapYear(int year) {
return LocalDate.ofYearDay(year, 1).isLeapYear();
}
}
3. 테스트 클래스(DateCalculatorTest) 컴파일