Как издеваться над атрибутами Spring @Retryable, такими как maxAttemps и delay, в SpringBootTest - PullRequest
3 голосов
/ 05 августа 2020

У меня есть метод, который я пытаюсь протестировать

@Retryable(value = {SocketTimeoutException.class},
             backoff = @Backoff(delay = 10000),
             maxAttempts = 4)
public String getNewString(String oldString) throws IOException{
   ...
}

Я создал его тестовый пример следующим образом:

@SpringBootTest
@RunWith(SpringRunner.class)
public class TestStrings {
  @Test(expected = SocketTimeoutException.class)
  public void testGetNewString() throws IOException {
     ...
  }

Все работает отлично, тестовый пример запускается 4 раз с задержкой 10 сек c. Но я хочу изменить атрибуты @Retryable, а именно maxAttempts с 4 до 2 и задержку с 10 до 0,5 с для этого конкретного тестового примера c. Я хочу сделать это так, чтобы при запуске тестовых примеров он не ждал долгое время, а тестовый пример должен заканчиваться быстро, одновременно проверяя функциональность повторных попыток.

1 Ответ

3 голосов
/ 05 августа 2020

Используйте

@Retryable(maxAttemptsExpression = "${max.attempts:4}", 
        backoff = @Backoff(delayExpression = "${delay:10000}"))

и установите свойства в вашем тестовом примере.

...