【发布时间】:2018-09-10 16:48:20
【问题描述】:
我使用 spring retry 并想对其进行单元测试。
但无法让单元测试工作。
请参阅下面的我的代码和测试。
当我运行测试时,它说应该是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);
}
}
}
【问题讨论】:
-
您的代码有很多编译错误,请全部修复。
标签: java unit-testing spring-retry