一、JUnit4參數化測試的五個步驟:
(1)為准備使用參數化測試的測試類指定特殊的運行器 import org.junit.runners.Parameterized。
(2)為測試類聲明幾個變量,分別用於存放期望值和測試所用數據。
(3)為測試類聲明一個帶有參數的公共構造函數,並在其中為第二個環節中聲明的幾個變量賦值。
(4)為測試類聲明一個使用注解 org.junit.runners.Parameterized.Parameters 修飾的,返回值為 java.util.Collection 的公共靜態方法,並在此方法中初始化所有需要測試的參數對,該方法的名字不做要求、該方法沒有參數。
(5)編寫測試方法,使用定義的變量作為參數進行測試。
二、實戰
仍然以oracleconnect.jar測試為例,配置junit及導入JAR包過程略,詳見http://www.cnblogs.com/shuaijie/articles/5757186.html
1、新建junit test case:JunitTest002.java

1 package JunitTestSample001; 2 3 import java.util.Arrays; 4 import java.util.Collection; 5 6 import org.junit.AfterClass; 7 import org.junit.Assert; 8 import org.junit.BeforeClass; 9 import org.junit.Test; 10 import org.junit.runner.RunWith; 11 import org.junit.runners.Parameterized; 12 import org.junit.runners.Parameterized.Parameters; 13 14 import testsample001.check; 15 16 @RunWith(Parameterized.class) 17 public class JunitTest002 { 18 19 // private static IUserService userService = null; 20 21 @BeforeClass 22 public static void setUp() throws Exception { 23 } 24 25 // (2)步驟二:為測試類聲明幾個變量,分別用於存放期望值和測試所用數據。此處我只放了測試所有數據,沒放期望值。 26 private String productNO; 27 private String resultInfo; 28 29 // (3)步驟三:為測試類聲明一個帶有參數的公共構造函數,並在其中為第二個環節中聲明的幾個變量賦值。 30 public JunitTest002(String productsn, String expectInfo) { 31 this.productNO = productsn; 32 this.resultInfo = expectInfo; 33 } 34 35 // (4)步驟四:為測試類聲明一個使用注解 org.junit.runners.Parameterized.Parameters 修飾的,返回值為 36 // java.util.Collection 的公共靜態方法,並在此方法中初始化所有需要測試的參數對。 37 @Parameters 38 @SuppressWarnings("rawtypes") 39 public static Collection testData() { 40 41 return Arrays.asList(new Object[][] { { "1", "防偽碼存在!" }, 42 { "2", "防偽碼存在!" }, { "3", "防偽碼存在!" }, }); 43 44 } 45 46 // (5)步驟五:編寫測試方法,使用定義的變量作為參數進行測試。 47 @Test 48 public void testresultInfo() { 49 System.out.println("-------------"); 50 // User user2 = userService.findByName(usernameParam); 51 check connor = new check(); 52 String actresultInfo = connor.ConnectOracle(productNO); 53 System.out.println(actresultInfo); 54 Assert.assertEquals(resultInfo, actresultInfo); 55 } 56 57 @AfterClass 58 public static void tearDown() throws Exception { 59 } 60 }
2、運行結果: