Junit 4 引入了一个新的功能参数化测试。参数化测试允许开发人员使用不同的值反复运行同一个测试。你将遵循 5 个步骤来创建参数化测试。
一旦每一行数据出现测试用例将被调用。让我们看看活动中的参数化测试。
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; |
} |
} |
在 C:> JUNIT_WORKSPACE 中创建一个文件名为 PrimeNumberCheckerTest.java 的 java 类。
import java.util.Arrays; |
import java.util.Collection; |
import org.junit.Test; |
import org.junit.Before; |
import org.junit.runners.Parameterized; |
import org.junit.runners.Parameterized.Parameters; |
import org.junit.runner.RunWith; |
import static org.junit.Assert.assertEquals; |
@RunWith(Parameterized.class) |
public class PrimeNumberCheckerTest { |
private Integer inputNumber; |
private Boolean expectedResult; |
private PrimeNumberChecker primeNumberChecker; |
@Before |
public void initialize() { |
primeNumberChecker = new PrimeNumberChecker(); |
} |
// Each parameter should be placed as an argument here |
// Every time runner triggers, it will pass the arguments |
// from parameters we defined in primeNumbers() method |
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 } |
}); |
} |
// This test will run 4 times since we have 5 parameters defined |
@Test |
public void testPrimeNumberChecker() { |
System.out.println("Parameterized Number is : " + inputNumber); |
assertEquals(expectedResult, |
primeNumberChecker.validate(inputNumber)); |
} |
} |
在 C:> JUNIT_WORKSPACE 中创建一个文件名为 TestRunner.java 的 java 类来执行测试用例
import org.junit.runner.JUnitCore; |
import org.junit.runner.Result; |
import org.junit.runner.notification.Failure; |
public class TestRunner { |
public static void main(String[] args) { |
Result result = JUnitCore.runClasses(PrimeNumberCheckerTest.class); |
for (Failure failure : result.getFailures()) { |
System.out.println(failure.toString()); |
} |
System.out.println(result.wasSuccessful()); |
} |
} |
C:\JUNIT_WORKSPACE>javac PrimeNumberChecker.java PrimeNumberCheckerTest.java |
TestRunner.java |
C:\JUNIT_WORKSPACE>java TestRunner |
Parameterized Number is : 2 |
Parameterized Number is : 6 |
Parameterized Number is : 19 |
Parameterized Number is : 22 |
Parameterized Number is : 23 |
true |