在某些狀況下,爲了更全面的測試,咱們須要構建多組數據對目標對象進行更全面的測試,普通的作法就有點繁瑣。
java
junit能夠是這種狀況參數化,只要定義好參數結構便可。sql
這裏用到@Parameters註解,放在一個public static方法上,並返回所需的參數集合;另外測試類上加@RunWith(Parameterized.class)。實例代碼以下:函數
待測試類:測試
public class Calculate { /** * 計算:返回兩個整數的和 * * @param first * @param second * @return */ public int sum(int first, int second) { return first + second; } }
測試類以下:this
import static org.junit.Assert.assertEquals; import java.util.Arrays; import java.util.Collection; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; @RunWith(Parameterized.class) public class CalculateTest { private int expected; private int first; private int second; private Calculate calculate = new Calculate(); public CalculateTest(int expected, int first, int second) { super(); this.expected = expected; this.first = first; this.second = second; } @Parameters public static Collection<Integer[]> testDatas() { // 測試參數:和構造函數中參數的位置一一對應。 return Arrays.asList(new Integer[][] { { 3, 2, 1 }, { 5, 3, 2 }, { 7, 6, 1 } }); } @Test public void testSum() { System.out.println("測試:" + first + "+" + second); assertEquals(expected, calculate.sum(first, second)); } }
從輸出能夠看出testSum()跑了三遍,輸出以下:spa
測試:2+1 測試:3+2 測試:6+1