题目2:根据输入的年份和月份判断月份的天数。
若月份不在有效范围之内,应提示:“月份输入不正确。”。月份不为2月,根据输入月份输出对应的月份天数。月份为2月,根据年份判断如为普通闰年,输出2月份正确天数;如为世纪闰年,输出2月份正确天数;不为闰年输出2月份天数。返回结果格式:“year年month月份的天数是days天。”year、month为传入的值,days为判断得到的天数值。其中变量year、month均须为正整数。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertThat中equalTo断言判断返回期望结果和实际返回是否一致。
相关代码:
package com.bjsxt.junit4;
public class TT {
public String day(int year,int month) {
var days = 0;
switch (month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
return year+"年"+month+"月份的天数是"+days+"天" ;
case 2: //判断是否为闰年
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
days = 29;
return year+"年"+month+"月份的天数是"+days+"天";
}else {
days = 28;
return year+"年"+month+"月份的天数是"+days+"天";
}
case 4:
case 6:
case 9:
case 11:
days = 30;
return year+"年"+month+"月份的天数是"+days+"天";
default:
return "月份输入不正确";
}
}
public static void main (String[] args) {
TT a = new TT();
System.out.println(a.day(2008, 2));
System.out.println(a.day(2008, 9));
System.out.println(a.day(2009, 2));
System.out.println(a.day(2009, 7));
System.out.println(a.day(2008, 12));
System.out.println(a.day(2010, 13));
System.out.println(a.day(2011, 5));
System.out.println(a.day(2008, 8));
System.out.println(a.day(2008, 6));
}
}
单元测试代码:
package com.bjsxt.junit4.test;
import static org.junit.Assert.*;
import org.junit.Test;
import com.bjsxt.junit4.TT;
import static org.hamcrest.Matchers.*;
public class T2 {
@Test
public void test1() {
String day1 = new TT().day(2008, 2);
assertThat(day1, equalTo(29));
}
@Test
public void test2() {
String day1 = new TT().day(2009, 2);
assertThat(day1, equalTo(28));
}
@Test
public void test3() {
String day1 = new TT().day(2009, 8);
assertThat(day1, equalTo(31));
}
@Test
public void test4() {
String day1 = new TT().day(2009, 9);
assertThat(day1, equalTo(30));
}
}