在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