可以将集合/ iterables /流传递到@ParamterizedTests吗?

时间:2017-05-31 03:18:55

标签: junit5

在Junit5 5.0.0 M4中,我可以这样做:

@ParameterizedTest
@MethodSource("generateCollections")
void testCollections(Collection<Object> collection) {
  assertOnCollection(collection);
}

private static Iterator<Collection<Object>> generateCollections() {
  Random generator = new Random();

  // We'll run as many tests as possible in 500 milliseconds.
  final Instant endTime = Instant.now().plusNanos(500000000);
  return new Iterator<Collection<Object>>() {
    @Override public boolean hasNext() {
      return Instant.now().isBefore(endTime);
    }

    @Override public Collection<Object> next() {
      // Dummy code
      return Arrays.asList("this", "that", Instant.now());
    }
  };
}

或者最终将一种或那种类型的集合传递到我的@ParameterizedTest的任何其他数量的东西。这不再有效:我现在得到错误

org.junit.jupiter.api.extension.ParameterResolutionException:
  Error resolving parameter at index 0

我一直在查看最近对SNAPSHOT的承诺,我在这方面有一些变化,但我看不到任何明显改变这一点的事情。

这是故意改变吗?我在JUnit5开发者频道上问这个,但我找不到。并且它本身并不是一个错误:传递一个集合不是一个记录的功能。

如果这是故意的改变,那么这是@TestFactory的明确用例......

1 个答案:

答案 0 :(得分:2)

请参阅https://github.com/junit-team/junit5/issues/872

下一个快照构建应修复回归。