TDD 예제(DateCalculator)

2024. 3. 18. 21:37Java

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