根据输入的年份和月份判断月份的天数。若月份不在有效范围之内,应提示:“月份输入不正确。”。月份不为2月,根据输入月份输出对应的月份天数。月份为2月,根据年份判断如为普通闰年,输出2月份正确天数;如为世纪闰年,输出2月份正确天数;不为闰年输出2月份天数。返回结果格式:“year年month月份的天数是days天。”year、month为传入的值,days为判断得到的天数值。其中变量year、month均须为正整数。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertThat中equalTo断言判断返回期望结果和实际返回是否一致。
时间: 2024-03-05 21:49:04 浏览: 128
您的问题是关于Java编程的。下面是实现您要求的Java代码:
```java
public class DateUtil {
/**
* 判断指定年份是否为闰年
* @param year 年份
* @return true为闰年,false为平年
*/
public static boolean isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}
/**
* 判断指定年份月份的天数
* @param year 年份
* @param month 月份
* @return 天数
*/
public static int getDaysOfMonth(int year, int month) {
int days = 0;
switch (month) {
case 2:
if (isLeapYear(year)) {
days = 29;
} else {
days = 28;
}
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
break;
default:
System.out.println("月份输入不正确。");
break;
}
return days;
}
}
```
接下来是测试类的代码:
```java
import org.junit.Test;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertThat;
public class DateUtilTest {
@Test
public void testGetDaysOfMonth() {
// 测试2月份天数
assertThat(DateUtil.getDaysOfMonth(2000, 2), equalTo(29));
assertThat(DateUtil.getDaysOfMonth(1900, 2), equalTo(28));
assertThat(DateUtil.getDaysOfMonth(2004, 2), equalTo(29));
assertThat(DateUtil.getDaysOfMonth(2001, 2), equalTo(28));
// 测试其他月份天数
assertThat(DateUtil.getDaysOfMonth(2021, 4), equalTo(30));
assertThat(DateUtil.getDaysOfMonth(2021, 6), equalTo(30));
assertThat(DateUtil.getDaysOfMonth(2021, 9), equalTo(30));
assertThat(DateUtil.getDaysOfMonth(2021, 11), equalTo(30));
assertThat(DateUtil.getDaysOfMonth(2021, 1), equalTo(31));
assertThat(DateUtil.getDaysOfMonth(2021, 3), equalTo(31));
assertThat(DateUtil.getDaysOfMonth(2021, 5), equalTo(31));
assertThat(DateUtil.getDaysOfMonth(2021, 7), equalTo(31));
assertThat(DateUtil.getDaysOfMonth(2021, 8), equalTo(31));
assertThat(DateUtil.getDaysOfMonth(2021, 10), equalTo(31));
assertThat(DateUtil.getDaysOfMonth(2021, 12), equalTo(31));
// 测试月份输入不正确的情况
assertThat(DateUtil.getDaysOfMonth(2021, 13), equalTo(0));
assertThat(DateUtil.getDaysOfMonth(2021, 0), equalTo(0));
assertThat(DateUtil.getDaysOfMonth(2021, -1), equalTo(0));
}
}
```
以上代码实现了根据输入的年份和月份判断月份的天数,并且使用JUnit框架编写了测试类对代码进行测试。
阅读全文