在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
的明确用例......