写一段java代码,运用单元测试的参数化设置 题目: 根据输入的年份判断是否为闰年,如果为世纪闰年输出“Century l eap year.”,如果为普通闰年输出“闰年”。,如果不为闰年输出“It i s not leap year.”。并设计测试数据进行判定覆盖测试
时间: 2024-03-28 17:29:39 浏览: 87
好的,以下是您的要求的Java代码,使用JUnit的参数化测试进行测试数据覆盖:
```java
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import java.util.Collection;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
public class LeapYearTest {
private int year;
private String expected;
public LeapYearTest(int year, String expected) {
this.year = year;
this.expected = expected;
}
@Parameters(name = "{index}: {0} is {1}")
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {
{ 2000, "Century leap year."},
{ 2004, "Leap year."},
{ 2100, "It is not leap year."}
});
}
@Test
public void testLeapYear() {
String message = "Failed for year " + year;
assertEquals(message, expected, isLeapYear(year));
}
private String isLeapYear(int year) {
if (year % 100 == 0) {
if (year % 400 == 0) {
return "Century leap year.";
} else {
return "It is not leap year.";
}
} else if (year % 4 == 0) {
return "Leap year.";
} else {
return "It is not leap year.";
}
}
}
```
在这个代码中,我们使用了JUnit的参数化测试,让我们可以轻松地测试多组数据。我们定义了一个`LeapYearTest`类,用来测试闰年判断的逻辑。在这个类中,我们定义了两个成员变量:`year`和`expected`,分别表示输入年份和预期结果字符串。我们还定义了一个构造函数和一个`@Parameters`注解,用来为不同的测试数据传递不同的输入和预期结果。
在`data()`方法中,我们定义了三组测试数据,分别是2000年、2004年和2100年。这些测试数据会通过构造函数被传递到测试方法中。
在`testLeapYear()`方法中,我们调用`isLeapYear()`方法来判断输入年份是否为闰年,并且将预期结果字符串与实际结果字符串做比较,以此来进行测试数据的覆盖测试。如果测试失败,会输出一个失败消息。
阅读全文