JUnit—参数化测试
一.概述
JUnit 4引入了一项名为参数化测试的新功能。参数化测试允许开发人员使用不同的值反复运行相同的测试。创建参数化测试需要遵循五个步骤:
-
使用@RunWith(Parameterized.class)注释测试类。
-
创建一个使用@Parameters注释的公共静态方法,该方法返回一个对象集合作为测试数据集。
-
创建一个公共构造函数,它接受相当于一行“测试数据”的内容。
-
为测试数据的每个“列”创建一个实例变量。
-
使用实例变量作为测试数据的来源创建测试用例。
对于每行数据,将调用一次测试用例。让我们看看参数化测试的实际效果。
二.示例代码:
1.创建目标类PrimeNumberChecker
public class PrimeNumberChecker {
public Boolean validate(final Integer primeNumber) {
for (int i = 2; i < (primeNumber / 2); i++) {
if (primeNumber % i == 0) {
return false;
}
}
return true;
}
}
2.创建测试类PrimeNumberCheckerTest
@RunWith(Parameterized.class)
public class PrimeNumberCheckerTest {
private Integer inputNumber;
private Boolean expectedResult;
private PrimeNumberChecker primeNumberChecker;
@Before
public void initialize() {
primeNumberChecker = new PrimeNumberChecker();
}
public PrimeNumberCheckerTest(Integer inputNumber, Boolean expectedResult) {
this.inputNumber = inputNumber;
this.expectedResult = expectedResult;
}
@Parameterized.Parameters
public static Collection primeNumbers() {
return Arrays.asList(new Object[][] { { 2, true }, { 6, false }, { 19, true }, { 22, false }, { 23, true } });
}
@Test
public void testPrimeNumberChecker() {
System.out.println("Parameterized Number is : " + inputNumber);
assertEquals(expectedResult, primeNumberChecker.validate(inputNumber));
}
}