扫码一下
查看教程更方便
junit 4 引入了一个新的功能参数化测试。参数化测试允许开发人员使用不同的值反复运行同一个测试。你将遵循 5 个步骤来创建参数化测试。
@runwith(parameterized.class)
来注解 test 类。@parameters
注解的公共的静态方法,它返回一个对象的集合(数组)来作为测试数据集合。一旦每一行数据出现测试用例将被调用。让我们看看活动中的参数化测试。
在 c:\ > junit_workspace 创建一个叫做 primenumberchecker.java 的 java 类来测试。
primenumberchecker.java
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; } }
创建一个叫做 primenumbercheckertest.java 的 java 类。
在 c:> junit_workspace 中创建一个文件名为 primenumbercheckertest.java 的 java 类。
primenumbercheckertest.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 类来执行测试用例
testrunner.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()); } }
用 javac 编译 primenumberchecker,primenumbercheckertest 和 testrunner 类。
c:\junit_workspace>javac primenumberchecker.java primenumbercheckertest.java
testrunner.java
现在运行 testrunner,它将运行由提供的 test case 类中所定义的测试用例。
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