Я нахожу, что обычно, когда вы хотите повторить весь тест, лучше всего идентифицировать и повторить отладочную операцию (операции) в пределах теста.
например. Представьте, что в следующем коде getResponse()
иногда выдает исключение. Вы можете использовать Spring Retry (которые вы можете использовать с или без других весенних проектов):
@Test
void somethingFlaky() {
String actual = new RetryTemplate().execute(retryContext -> getResponse());
assertEquals("Hello World!", actual);
}
В этом примере, если getResponse()
генерирует исключения 3 раза подряд, то общий тест потерпит неудачу за исключением брошенной в последний попытка. RetryTemplate
может быть настроен с различными политиками повторной и обратной политики (например, повторите попытку 8 раз, сон 50 миллисекунд между каждой попыткой, экспоненциальный откат и т. Д.).
Таким образом, вы можете управлять повторной попыткой ресурсов по мере необходимости и оставить тестовую инфраструктуру делать то, что она делает лучше всего: управлять тестами (а не нечеткими целевыми объектами тестирования).
Повторные тестовые вызовы в ближайшее время: https://github.com/junit-team/junit5/pull/642 – Sormuras