引數化測試(Parameterized Test)
阿新 • • 發佈:2018-12-20
Junit 4 引數化測試 允許通過變化範圍的引數值來測試方法。引數擦測試可以通過以下簡單的步驟實現:
- 對測試類添加註解 @RunWith(Parameterized.class)。
- 將需要使用變化範圍引數值測試的引數定義為私有變數。
- 使用上一步驟宣告的私有變數作為入參,建立建構函式。
- .建立一個使用@Parameters註解的公共靜態方法,它將需要測試的各種變數值通過集合的形式返回。
- 使用定義的私有變數定義測試方法。
Junit 4 引數化測試樣例
EvenNumberChecker.java 校驗輸入的數字是否為偶數:
package in.co.javatutorials; /** * @author javatutorials.co.in */ public class EvenNumberChecker { /** * Is input number even. * * @param i input number * @return true if input is even number; otherwise return false */ public boolean isEven(int i) { if (i % 2 == 0) { return true; } else { return false; } } }
EvenNumberCheckerTest.java 對 EvenNumberChecker.java 進行引數化測試:
package in.co.javatutorials; import static org.junit.Assert.*; 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; /** * @author javatutorials.co.in */ // Step 1 @RunWith(Parameterized.class) public class EvenNumberCheckerTest { // Step 2: variables to be used in test method of Step 5 private int inputNumber; private boolean isEven; // Step 3: parameterized constructor public EvenNumberCheckerTest(int inputNumber, boolean isEven) { super(); this.inputNumber = inputNumber; this.isEven = isEven; } // Step 4: data set of variable values @Parameters public static Collection<Object[]> data() { Object[][] data = new Object[][] { { 2, true }, { 5, false }, { 10, false } }; return Arrays.asList(data); } @Test public void test() { System.out.println("inputNumber: " + inputNumber + "; isEven: " + isEven); EvenNumberChecker evenNumberChecker = new EvenNumberChecker(); // Step 5: use variables in test code boolean actualResult = evenNumberChecker.isEven(inputNumber); assertEquals(isEven, actualResult); } }
樣例輸出
在Eclipse junit 視窗的輸出為:
樣例日誌輸出
inputNumber: 2; isEven: true
inputNumber: 5; isEven: false
inputNumber: 10; isEven: false
本文出處為 http://blog.csdn.net/luanlouis,轉載請註明出處,謝謝!