Ограничить бесконечный поток аргументов в параметризованном тесте - PullRequest
2 голосов
/ 30 апреля 2020

Я хочу написать 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) на аннотацию к моему методу испытаний?

...