Согласно javadoc перехватчик взаимоисключающий с другими атрибутами. Поэтому вы должны решить использовать либо перехватчик, либо включить.
Но чтобы быть уверенным: Просто выполните модульное тестирование! сделайте свой метод с аннотацией @Retryable
выдающим SomeException
или SomeOtherException
и посмотрите.
Один из способов проверить это: предположим, что вы повторяете метод
void dummy() {
someObject.someOperation();
}
Смоделируйте someObject
(используя Mockito или любую другую библиотеку), чтобы someOperation
выдало SomeException/SomeOtherException
. В тесте проверьте количество вызовов someObject.someOperation()
Если у вас есть бесконечные повторные попытки (что редко бывает полезно), тогда тест зависнет, поэтому такой тест должен иметь тайм-аут (@Test(timeout=1000)
), и вы должны сделать тест пройденным, когда произойдет TimeoutException
.
Если у вас есть конечное количество повторных попыток, вам следует проверить, сколько раз someObject.someOperation()
было вызвано до истечения времени ожидания.
Примечание: этот тест должен быть тестом Spring (должен загружать контекст с аннотацией @EnableRetry
). В противном случае (если вы напишите это как простой модульный тест), аннотация @Retryable
будет полностью проигнорирована.
person
Bartosz Bilicki
schedule
11.04.2018