根据输入的年份和月份判断月份的天数。若月份不在有效范围之内,应提示:“月份输入不正确。”。月份不为2月,根据输入月份输出对应的月份天数。月份为2月,根据年份判断如为普通闰年,输出2月份正确天数;如为世纪闰年,输出2月份正确天数;不为闰年输出2月份天数。返回结果格式:“year年month月份的天数是days天。”year、month为传入的值,days为判断得到的天数值。其中变量year、month均须为正整数。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertThat中equalTo断言判断返回期望结果和实际返回是否一致。
时间: 2024-03-17 19:43:05 浏览: 38
以下是Java代码实现:
```java
public class DateUtil {
public static String getDaysOfMonth(int year, int month) {
if (month < 1 || month > 12) {
return "月份输入不正确。";
}
int days;
if (month == 2) {
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
days = 29;
} else {
days = 28;
}
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
days = 30;
} else {
days = 31;
}
return year + "年" + month + "月份的天数是" + days + "天。";
}
}
```
以下是JUnit测试类实现:
```java
import org.junit.Test;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertThat;
public class DateUtilTest {
@Test
public void testDaysOfMonth() {
// 月份输入不正确
assertThat(DateUtil.getDaysOfMonth(2021, 13), equalTo("月份输入不正确。"));
assertThat(DateUtil.getDaysOfMonth(2021, 0), equalTo("月份输入不正确。"));
// 31天的月份
assertThat(DateUtil.getDaysOfMonth(2021, 1), equalTo("2021年1月份的天数是31天。"));
assertThat(DateUtil.getDaysOfMonth(2021, 3), equalTo("2021年3月份的天数是31天。"));
assertThat(DateUtil.getDaysOfMonth(2021, 5), equalTo("2021年5月份的天数是31天。"));
assertThat(DateUtil.getDaysOfMonth(2021, 7), equalTo("2021年7月份的天数是31天。"));
assertThat(DateUtil.getDaysOfMonth(2021, 8), equalTo("2021年8月份的天数是31天。"));
assertThat(DateUtil.getDaysOfMonth(2021, 10), equalTo("2021年10月份的天数是31天。"));
assertThat(DateUtil.getDaysOfMonth(2021, 12), equalTo("2021年12月份的天数是31天。"));
// 30天的月份
assertThat(DateUtil.getDaysOfMonth(2021, 4), equalTo("2021年4月份的天数是30天。"));
assertThat(DateUtil.getDaysOfMonth(2021, 6), equalTo("2021年6月份的天数是30天。"));
assertThat(DateUtil.getDaysOfMonth(2021, 9), equalTo("2021年9月份的天数是30天。"));
assertThat(DateUtil.getDaysOfMonth(2021, 11), equalTo("2021年11月份的天数是30天。"));
// 2月份的天数
assertThat(DateUtil.getDaysOfMonth(2000, 2), equalTo("2000年2月份的天数是29天。"));
assertThat(DateUtil.getDaysOfMonth(2021, 2), equalTo("2021年2月份的天数是28天。"));
assertThat(DateUtil.getDaysOfMonth(2004, 2), equalTo("2004年2月份的天数是29天。"));
}
}
```
以上代码实现了对输入年份和月份的判断,以及根据年份和月份计算月份天数,并返回结果字符串。同时,使用JUnit框架编写了测试类对编写的程序代码进行了测试,满足了语句覆盖测试。