4月27日

YearChecker.java

package test2;

public class YearChecker {
    /**
     * 判断给定年份是否为闰年
     * 闰年规则:
     * 1. 能被4整除但不能被100整除,或者
     * 2. 能被400整除
     * @param year 要检查的年份
     * @return 如果是闰年返回true,否则返回false
     * @throws IllegalArgumentException 如果年份小于等于0
     */
    public boolean isLeapYear(int year) {
        if (year <= 0) {
            throw new IllegalArgumentException("年份必须大于0");
        }

        if (year % 400 == 0) {
            return true;
        } else if (year % 100 == 0) {
            return false;
        } else {
            return year % 4 == 0;
        }
    }
}

YearCheckerTest.java

package test2;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

class YearCheckerTest {
    private YearChecker yearChecker;

    @BeforeEach
    void setUp() {
        yearChecker = new YearChecker();
    }

    // 测试普通闰年(能被4整除但不能被100整除)
    @Test
    void testTypicalLeapYear() {
        assertTrue(yearChecker.isLeapYear(2004));
        assertTrue(yearChecker.isLeapYear(2020));
        assertTrue(yearChecker.isLeapYear(1996));
    }

    // 测试世纪闰年(能被400整除)
    @Test
    void testCenturyLeapYear() {
        assertTrue(yearChecker.isLeapYear(2000));
        assertTrue(yearChecker.isLeapYear(1600));
    }

    // 测试非闰年(不能被4整除)
    @Test
    void testNonLeapYear() {
        assertFalse(yearChecker.isLeapYear(2001));
        assertFalse(yearChecker.isLeapYear(2019));
        assertFalse(yearChecker.isLeapYear(1900));
    }

    // 测试世纪非闰年(能被100整除但不能被400整除)
    @Test
    void testCenturyNonLeapYear() {
        assertFalse(yearChecker.isLeapYear(1700));
        assertFalse(yearChecker.isLeapYear(1800));
        assertFalse(yearChecker.isLeapYear(2100));
    }

    // 测试非法输入(年份<=0)
    @Test
    void testInvalidInput() {
        assertThrows(IllegalArgumentException.class, () -> yearChecker.isLeapYear(0));
        assertThrows(IllegalArgumentException.class, () -> yearChecker.isLeapYear(-100));
        assertThrows(IllegalArgumentException.class, () -> yearChecker.isLeapYear(-1));
    }
}

 

posted @ 2025-04-28 15:15  KuanDong24  阅读(14)  评论(0)    收藏  举报