}
@Test
public void square3() …{
calculator.square(-3);
assertEquals(9, calculator.getResult());
}
}
为了简化类的测试,JUnit4提出了“参数化测试”的概念,只写一个测试函数,把这若干种情况作为参数传递进去,一次性的完成测试。代码如下:
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import java.util.Arrays;
import java.util.Collection;
@RunWith(Parameterized.class)
public class SquareTest …{
private static Calculator calculator = new Calculator();
private int param;
private int result;
@Parameters
public static Collection data() …{
return Arrays.asList(new Object[][]…{
…{2, 4},
…{0, 0},
…{-3, 9},
});
}
//构造函数,对变量进行初始化
public SquareTest(int param, int result) …{
this.param = param;
this.result = result;
}
@Test
public void square() …{
calculator.square(param);
assertEquals(result, calculator.getResult());
}
}
下面我们对上述代码进行分析。首先,你要为这 种测试专门生成一个新的类,而不能与其他测试共用同一个类,此例中我们定义了一个SquareTest类。然后,你要为这个类指定一个Runner,而不 能使用默认的Runner了,因为特殊的功能要用特殊的Runner嘛。@RunWith(Parameterized.class)这条语句就是为这个 类指定了一个ParameterizedRunner。第二步,定义一个待测试的类,并且定义两个变量,一个用于存放参数,一个用于存放期待的结果。接下 来,定义测试数据的集合,也就是上述的data()方法,该方法可以任意命名,但是必须使用@Parameters标注进行修饰。这个方法的框架就不予解 释了,大家只需要注意其中的数据,是一个二维数组,数据两两一组,每组中的这两个数据,一个是参数,一个是你预期的结果。比如我们的第一组{2, 4},2就是参数,4就是预期的结果。这两个数据的顺序无所谓,谁前谁后都可以。之后是构造函数,其功能就是对先前定义的两个参数进行初始化。在这里你可 要注意一下参数的顺序了,要和上面的数据集合的顺序保持一致。如果前面的顺序是{参数,期待的结果},那么你构造函数的顺序也要是“构造函数(参数, 期待的结果)”,反之亦然。junit4单元测试实例最后就是写一个简单的测试例了,和前面介绍过的写法完全一样,在此就不多说。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-25681-7.html
现在呢
男女比例已经严重失衡