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)); } }

浙公网安备 33010602011771号