Junit参数化测试方法(一)
一、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、运行结果: