在Junit5中提供了大量的数据驱动注解,比junit4来说好用了不少,这里罗列一下。
@ValueSource
通过设置一个字符串,来获取各个值
@ParameterizedTest@ValueSource(strings = {"Radar", "Rotor", "Tenet", "Madam", "Racecar"})void dataunit(String words) {System.out.println(words);}
@CsvSource
通过设置一个Csv格式来获取数据源
@ParameterizedTest@CsvSource({"2017-06-01, 2018-10-15","2017-05-01, 2018-10-15","2017-06-01,2018-11-16"})void shouldCreateValidDateRange(LocalDate startDate, LocalDate endDate) {System.out.println(startDate+"|"+endDate);}
@CsvFileSource
通过设置一个csv格式的文件(需要放在test下的resources目录中),来获取数据源。
@ParameterizedTest@CsvFileSource(resources = "/param.csv",numLinesToSkip = 1)void cvsunit(int id,String name){System.out.println(id+"|"+name);}

@MethodSource
最粗暴的做法,直接指向static类,通过这个功能可以非常方面的获取各种数据。
@ParameterizedTest@MethodSource("stringIntAndListProvider")void testWithMultiArgMethodSource(String str, int num, List<String> list) {assertEquals(5, str.length());assertTrue(num >=1 && num <=2);assertEquals(2, list.size());}static Stream<Arguments> stringIntAndListProvider() {return Stream.of(arguments("apple", 1, Arrays.asList("a", "b")),arguments("lemon", 2, Arrays.asList("x", "y")));}
附录
其实这些内容在Junit5的官方文档上都有,建议大家认真查看
junit5UserGuide.pdf
