public class DemoUnit {
private int p1;
private int p2;
private int sum;
public DemoUnit(int p1, int p2, int sum) {
this.p1 = p1;
this.p2 = p2;
this.sum = sum;
}
public int getP1() {
return p1;
}
public void setP1(int p1) {
this.p1 = p1;
}
public int getP2() {
return p2;
}
public void setP2(int p2) {
this.p2 = p2;
}
public int getSum() {
return sum;
}
public void setSum(int sum) {
this.sum = sum;
}
}
*******************************************************************
// 将参数化测试的类使用 @RunWith(Parameterized.class) 注解
@RunWith(Parameterized.class)
public class TestTUtil {
private TUtil tUtil;
private DemoUnit demoUnit;
// 创建一个公共的构造函数,构造参数和@Parameterized.Parameters返回的相同
public TestTUtil(DemoUnit demoUnit) {
this.demoUnit=demoUnit;
}
@Before
public void init(){
tUtil = new TUtil();
}
@Test
public void textAdd() {
int result = tUtil.add(demoUnit.getP1(), demoUnit.getP2());
System.out.println(result);//输出3,4,5,6,7,8
Assert.assertEquals(result, demoUnit.getSum());
}
//创建一个由 @Parameters 注释的公共的静态方法,它返回一个对象的集合(数组)来作为测试数据集合
//或直接返回一个数组, 不过构造函数的构造参数也和一个数组的参数类型一致
//集合里的一组数据将用于该类内的所有 @Test 方法, 所有 @Test 方法执行后换下一组
//返回值是 Collection 的子类
@Parameterized.Parameters
public static Collection produced() {
ArrayList<DemoUnit> demoUnits=new ArrayList<DemoUnit>();
demoUnits.add(new DemoUnit(1,2,3));
demoUnits.add(new DemoUnit(1,3,4));
demoUnits.add(new DemoUnit(1,4,5));
demoUnits.add(new DemoUnit(1,5,6));
demoUnits.add(new DemoUnit(1,6,7));
demoUnits.add(new DemoUnit(1,7,8));
return demoUnits;
}
}
0 Comments