Junit 参数化测试
来源:原创 发布时间:2015-04-12 归档:junit
环境 :
JDK 7
Maven 3
Junit 4.11
Eclipse Luna
public class Calculator { public int add(int x, int y) { return x + y; } }
@RunWith(Parameterized.class) public class CalculatorTest { private int x; private int y; private int z; public CalculatorTest(int x, int y, int z) { this.x = x; this.y = y; this.z = z; } @Parameters public static Collection<Object[]> dataStore() { return Arrays.asList(new Object[][]{ {1, 2, 3}, {2, 3, 5}, {3, 4, 7}, {4, 5, 9} }); } @Test public void testAdd() { Calculator calculator = new Calculator(); assertEquals(z, calculator.add(x, y)); } }
测试类需要使用 @RunWith(Parameterized.class) 标注, 表明这是一个 Parameterized test。
由 @Parameters 注解标注的 public static Collection<Object[]> 方法提供一组测试数据, 测试用例执行时, 通过有参的构造方法将测试数据依次入参, 如第一组 {1, 2, 3}, 则构造器参数 x=1, y=2, z=3。最后执行测试方法。
assertEquals(z, calculator.add(x, y)) 即 x + y 是否等于 z, 若等于则成功, 否则失败。
mvn clean test 执行结果 :
由 @Parameters 注解标注的 public static Collection<Object[]> 方法提供一组测试数据, 测试用例执行时, 通过有参的构造方法将测试数据依次入参, 如第一组 {1, 2, 3}, 则构造器参数 x=1, y=2, z=3。最后执行测试方法。
assertEquals(z, calculator.add(x, y)) 即 x + y 是否等于 z, 若等于则成功, 否则失败。
mvn clean test 执行结果 :
Running org.lychie.service.CalculatorTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.137 sec
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.137 sec
示例代码下载