Я использую пружинное повторение и хочу выполнить его модульное тестирование.
но не смог заставить работать модульный тест.
См. Мой код и тест ниже.
Когда я запускаю тест, он говорит, что ожидал 3 times
, но был 1 time
.
Я должен что-то пропустить. спасибо
@RunWith(SpringJUnit4ClassRunner.class)
public class MyOperationsTest
private MyOperations myOperations;
@mock
Param1 param1;
@mock
Param2 param2AnotherOperation;
@Before
public void setUp(){
myOperations = new MyOperations(param1, param2AnotherOperation);
}
@Test
public void testmyMethodWithFailure_ShouldRetry3TimesThenThrowException() {
MyException exception1 = new MyException ("exception 1");
MyException exception2 = new MyException ("exception 2");
MyException exception3 = new MyException ("exception 3");
Mockito.doThrow(exception1).when(param2AnotherOperation).itsMethod(firstParam, secondParam);
Mockito.doThrow(exception2).when(param2AnotherOperation).itsMethod(firstParam, secondParam);
Mockito.doThrow(exception3).when(param2AnotherOperation).itsMethod(firstParam, secondParam);
Throwable writingException =
catchThrowable(() -> myOperations.myMethod(firstParam, secondParam));
Mockito.verify(param2AnotherOperation, times(3)).itsMethod(firstParam, secondParam);
}
в классе MyOperations
@Service
@EnableRetry
public class MyOperations{
Param1 param1;
Param2AnotherOperation param2AnotherOperation
public MyOperations(Param1 param1, Param2AnotherOperation param2AnotherOperation) {
this.param1 = param1;
this.param2AnotherOperation = param2AnotherOperation;
}
@Retryable(value = {MyExceptoin.class},
maxAttemptsExpression = "3",
backoff = @Backoff(delayExpression = "#{@retryInterval}"))
public void myMethod(firstParam, secondParam){
try {
param2AnotherOperation.itsMethod(firstParam, secondParam);
...
}
catch(Exception ex){
throw new MyExceptoin(ex);
}
}
}