jck28-桔子-junit参数化之methodSource --- @ParameterizedTest @MethodSource("dataProviderMethodName")

  • 参数化关键字@ParameterizedTest 代替@Test

    • 参数化的Value来源是method @MethodSource(“dataProviderMethodName”)
  • 形参个数=1时候,直接用流Stream返回数据:

    //形式参数个数==1
    static Stream<String> dataProvider1(){  //Stream中的泛型,必须和引用测试方法中的形式参数类型一致
        return Stream.of("赫敏","罗恩");
    }

    @ParameterizedTest
    @MethodSource("dataProvider1") //methodSource定义参数所在方法名字
    public void functionMethod1(String name){
        System.out.println("name: "+name);
    }

  • 形参个数>1时候,用junnit推荐的Arguments返回参数
    //形式参数个数>=2
    static Stream<Arguments> dataProvider2(){  //Stream中的泛型,必须和引用测试方法中的形式参数类型一致
        return Stream.of(
                Arguments.arguments("罗恩",10),
                Arguments.arguments("赫敏",11),
                Arguments.arguments("Harry",11)
        );
    }

    public void myFunction1(String name, int age) {
        System.out.println("name: "+name);
        assertEquals(name.length(), 2);
        System.out.println("age: "+age);
        assertTrue(age>2);
    }

    @ParameterizedTest
    @MethodSource("dataProvider2")
    public void methodSourceDemo(String name, int age){
        myFunction1(name, age);
    }