在 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
......