JUnit4中参数化测试

时间:2021-03-06 05:59:00
源地址:http://ttitfly.iteye.com/blog/178496
JUnit4中参数化测试要点: 

1. 测试类必须由Parameterized测试运行器修饰 

2. 准备数据。数据的准备需要在一个方法中进行,该方法需要满足一定的要求: 

1)该方法必须由Parameters注解修饰 
2)该方法必须为public static的 
3)该方法必须返回Collection类型 
4)该方法的名字不做要求 
5)该方法没有参数 

如: 
测试方法: 
Java代码  JUnit4中参数化测试
  1. public int add(int a,int b){  
  2.         return a+b;  
  3.     }  


测试代码: 
Java代码  JUnit4中参数化测试
  1. package org.test;  
  2.   
  3. import java.util.Arrays;  
  4. import java.util.Collection;  
  5.   
  6. import org.junit.Assert;  
  7. import org.junit.Test;  
  8. import org.junit.runner.RunWith;  
  9. import org.junit.runners.Parameterized;  
  10. import org.junit.runners.Parameterized.Parameters;  
  11. /** 
  12.  * 参数化测试的类必须有Parameterized测试运行器修饰 
  13.  * 
  14.  */  
  15. @RunWith(Parameterized.class)  
  16. public class AddTest3 {  
  17.   
  18.     private int input1;  
  19.     private int input2;  
  20.     private int expected;  
  21.       
  22.     /** 
  23.      * 准备数据。数据的准备需要在一个方法中进行,该方法需要满足一定的要求: 
  24.  
  25.          1)该方法必须由Parameters注解修饰 
  26.          2)该方法必须为public static的 
  27.          3)该方法必须返回Collection类型 
  28.          4)该方法的名字不做要求 
  29.          5)该方法没有参数 
  30.      * @return 
  31.      */  
  32.     @Parameters  
  33.     @SuppressWarnings("unchecked")  
  34.     public static Collection prepareData(){  
  35.         Object [][] object = {{-1,-2,-3},{0,2,2},{-1,1,0},{1,2,3}};  
  36.         return Arrays.asList(object);  
  37.     }  
  38.       
  39.     public AddTest3(int input1,int input2,int expected){  
  40.         this.input1 = input1;  
  41.         this.input2 = input2;  
  42.         this.expected = expected;  
  43.     }  
  44.     @Test  
  45.     public void testAdd(){  
  46.         Add add = new Add();  
  47.         int result = add.add(input1, input2);  
  48.         Assert.assertEquals(expected,result);  
  49.     }  
  50.       
  51. }