Я хочу написать ParameterizedTest, который облегчает MethodSource для генерации последовательности случайных значений. Теперь мне интересно, существует ли какой-либо декларативный подход для ограничения количества выполняемых тестов.
@ParameterizedTest
@MethodSource("create64RandomBytes")
//@SomeLimitAnnotation(100) wanted here
void testStuff(byte[] randomBytes) {
// ...
}
static Stream<Arguments> create64RandomBytes() {
Random rnd = new Random(42l);
return Stream.generate(() -> {
byte[] bytes = new byte[64];
rnd.nextBytes(bytes);
return Arguments.of(bytes);
}).limit(100); // I want to avoid this "limit" call
}
Конечно, я могу ограничить количество элементов в потоке, но так как @MethodSource
создан для потребления потоков (и, конечно, разработчики JUnit знают о бесконечных потоках), мне интересно, есть ли лучший способ сделать это.
TLDR: Могу ли я заменить вызов limit(100)
на аннотацию к моему методу испытаний?