1. package test.JUnitdemo;
    2. import static org.junit.Assert.assertEquals;
    3. import java.util.Arrays;
    4. import java.util.Collection;
    5. import org.junit.Test;
    6. import org.junit.runner.RunWith;
    7. import org.junit.runners.Parameterized;
    8. import org.junit.runners.Parameterized.Parameters;
    9. //运行参数化测试
    10. //使用parameterized的测试运行器运行测试类
    11. /**
    12. * 注意事项:
    13. * 1、测试类必须由@RunWith(指定测试运行器类)修饰,参数必须是Parameterized.class(指参数化测试)
    14. * 2、必须声明测试中所使用的变量
    15. * 3、定义参数设置方法,目的是对运行测试的变量初始化
    16. * 3.1必须使用@Parameters注释
    17. * 3.2该方法的必须是public static Collection
    18. * @author Masker
    19. *
    20. */
    21. /**
    22. * 参数化运行过程:
    23. * 1、JUnit使用数组的第一个元素调用构造函数
    24. * 2、接着调用测试方法
    25. * 3、JUnit会按Collection中的元素重复以上过程
    26. * @author Masker
    27. *
    28. */
    29. @RunWith(value = Parameterized.class)
    30. public class ParameterizedTest {
    31. //声明测试中使用的变量
    32. private double expected;
    33. private double valueOne;
    34. private double valueTow;
    35. //设置参数数据的方法
    36. @Parameters
    37. public static Collection<Integer[]> getTestParameters(){
    38. return Arrays.asList(new Integer[][] {
    39. {2,1,1},
    40. {3,2,1},
    41. {4,3,1},
    42. });
    43. }
    44. //为测试接收参数,必须唯一的公共构造函数
    45. public ParameterizedTest(double expected, double valueOne, double valueTwo) {
    46. this.expected = expected;
    47. this.valueOne = valueOne;
    48. this.valueTow = valueTwo;
    49. }
    50. @Test
    51. public void sum() {
    52. Calculator cal = new Calculator();
    53. assertEquals(expected, cal.add(valueOne, valueTow),0);
    54. }
    55. }