在Junit5中提供了大量的数据驱动注解,比junit4来说好用了不少,这里罗列一下。

@ValueSource

通过设置一个字符串,来获取各个值

  1. @ParameterizedTest
  2. @ValueSource(strings = {"Radar", "Rotor", "Tenet", "Madam", "Racecar"})
  3. void dataunit(String words) {
  4. System.out.println(words);
  5. }

@CsvSource

通过设置一个Csv格式来获取数据源

  1. @ParameterizedTest
  2. @CsvSource(
  3. {"2017-06-01, 2018-10-15",
  4. "2017-05-01, 2018-10-15",
  5. "2017-06-01,2018-11-16"}
  6. )
  7. void shouldCreateValidDateRange(LocalDate startDate, LocalDate endDate) {
  8. System.out.println(startDate+"|"+endDate);
  9. }

@CsvFileSource

通过设置一个csv格式的文件(需要放在test下的resources目录中),来获取数据源。

  1. @ParameterizedTest
  2. @CsvFileSource(resources = "/param.csv",numLinesToSkip = 1)
  3. void cvsunit(int id,String name){
  4. System.out.println(id+"|"+name);
  5. }

image.png

@MethodSource

最粗暴的做法,直接指向static类,通过这个功能可以非常方面的获取各种数据。

  1. @ParameterizedTest
  2. @MethodSource("stringIntAndListProvider")
  3. void testWithMultiArgMethodSource(String str, int num, List<String> list) {
  4. assertEquals(5, str.length());
  5. assertTrue(num >=1 && num <=2);
  6. assertEquals(2, list.size());
  7. }
  8. static Stream<Arguments> stringIntAndListProvider() {
  9. return Stream.of(
  10. arguments("apple", 1, Arrays.asList("a", "b")),
  11. arguments("lemon", 2, Arrays.asList("x", "y"))
  12. );
  13. }

附录

其实这些内容在Junit5的官方文档上都有,建议大家认真查看
junit5UserGuide.pdf