五、参数化测试
若待测试的输入和输出是一组数据
1、可以把测试数据组织起来;
2、用不同的测试数据调用相同的测试方法。
@RunWith(Parameterized.class)
public class AbsTest{
@Parameters
public static Collection<?> data(){
return Arrays asList(new Object[][]{{0,0},{1,1},{-1,1}});
}
int input ;
int expected;
public AbsTest(int input,int expected){
this.input = input;
this.expected = expected;
}
@Test
public void testAbs(){
int r = Math.abs(this.input);
assertEquals(this.expected, r);
}
}
参数必须由静态方法data() 返回,返回类型为Collection<Object[]>静态方法必须标记为@parameters 测试类必须标记为@RunWith(Parameterized.class) ,构造方法参数必须和测试参数对应。 六、超时测试
public class PItest{
PI pi = new PI();
/*timeout时间单位为毫秒,如下含义为不超过1000ms的情况的下,测试通过*/
@Test(timeout=1000)
public void testTimeout(){
/*计算pi到展开项的第1000个*/
double r = pi.calculate(1000);
assertEquals(3.14, r , 0.01);
}
}