TDD 예제(DateCalculator)
2024. 3. 18. 21:37ㆍJava
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) 컴파일
'Java' 카테고리의 다른 글
매개변수와 전달인자 (0) | 2024.03.26 |
---|---|
객체지향 (0) | 2024.03.26 |
TDD(테스트 주도 개발) (0) | 2024.03.18 |
제한 없는 인자 (0) | 2024.03.15 |
명령 행 인자 (0) | 2024.03.15 |