#java #unit-testing #timeout #freeze #secure-random
#java #модульное тестирование #тайм-аут #замораживание #безопасный-случайный
Вопрос:
Я написал тест, чтобы проверить, висит ли RNG
public class StringUtilsTest {
@Test
@Timeout(value = 10)
public void repeated_generateRandomStringOfDigits() {
for (int i=0; i<5; i) {
StringUtils.generateRandomStringOfDigits(10);
try {
Thread.sleep(1);
} catch (InterruptedException ie) {
Thread.currentThread().interrupt();
}
}
}
}
но это работает не так, как ожидалось: если RNG
зависает, тест тоже зависает, игнорируя время ожидания.
Как это сделать?
Ответ №1:
Используйте это вместо @Timeout :
@Rule
public Timeout timout = Timeout.millis(10000); // in milliseconds
Комментарии:
1. Выглядит глобально. Мне нужен тайм-аут только для одного теста.