Asyn retry Junit 默认不是运行 3 次
Asyn retry Junit is not running for 3 times as default
我正在为可重试的失败场景进行 junit 测试。在我们升级到新版本的 mockito 和 spring 引导版本之前,它曾经工作正常。我们已经更新到 spring 启动 2。4.x 并开始看到这个问题。
Service.java
public class RetryTest
{
@Autowired
private RetryTemplate retryTemplate;
@Async
private void retryTest(String in) {
retryTemplate.execute( invoke -> {
callMethod(in);
return null;
}, recoveryCallBack);
}
public void callMethod(String in) {
//some service call on failruew need to retry this.
someService.test(in);
}
}
单元测试:
@RunWith(SpringJUint4Runner.class)
Public class Test {
@InjectMocks
private RetryTesr retryTest;
@Mock
private RetryTemplate retryTemplate;
@Test(expected = ServiceException.class)
public void testFailure() {
when(someService.test(anyString())).ThenRetrun(new RuntimeException.class). ThenRetrun(new RuntimeException.class). ThenRetrun(new RuntimeException.class);
retryTest.retryTest(in);
}
}
当我在上面运行时,即使retryTemplate默认有3次,它也只执行一次。预期应该执行 3 次,然后在我们抛出 recoveryCallBack 时抛出服务异常。
谁能推荐一下。
要测试任何 spring 功能,您必须使用 @SpringBootTest 注释编写集成测试用例
@RunWith(SpringJUint4Runner.class)
@SpringBootTest
Public class Test {
@Autowired
private RetryTesr retryTest;
@MockBean
private RetryTemplate retryTemplate;
@Test(expected = ServiceException.class)
public void testFailure() {
when(someService.test(anyString())).ThenRetrun(new RuntimeException.class). ThenRetrun(new RuntimeException.class). ThenRetrun(new RuntimeException.class);
retryTest.retryTest(in);
}
}
这很奇怪。升级 spring 版本后 root ..Mockito.any() 不工作,所以我必须使用准确的值来匹配模拟。
我正在为可重试的失败场景进行 junit 测试。在我们升级到新版本的 mockito 和 spring 引导版本之前,它曾经工作正常。我们已经更新到 spring 启动 2。4.x 并开始看到这个问题。
Service.java
public class RetryTest
{
@Autowired
private RetryTemplate retryTemplate;
@Async
private void retryTest(String in) {
retryTemplate.execute( invoke -> {
callMethod(in);
return null;
}, recoveryCallBack);
}
public void callMethod(String in) {
//some service call on failruew need to retry this.
someService.test(in);
}
}
单元测试:
@RunWith(SpringJUint4Runner.class)
Public class Test {
@InjectMocks
private RetryTesr retryTest;
@Mock
private RetryTemplate retryTemplate;
@Test(expected = ServiceException.class)
public void testFailure() {
when(someService.test(anyString())).ThenRetrun(new RuntimeException.class). ThenRetrun(new RuntimeException.class). ThenRetrun(new RuntimeException.class);
retryTest.retryTest(in);
}
}
当我在上面运行时,即使retryTemplate默认有3次,它也只执行一次。预期应该执行 3 次,然后在我们抛出 recoveryCallBack 时抛出服务异常。
谁能推荐一下。
要测试任何 spring 功能,您必须使用 @SpringBootTest 注释编写集成测试用例
@RunWith(SpringJUint4Runner.class)
@SpringBootTest
Public class Test {
@Autowired
private RetryTesr retryTest;
@MockBean
private RetryTemplate retryTemplate;
@Test(expected = ServiceException.class)
public void testFailure() {
when(someService.test(anyString())).ThenRetrun(new RuntimeException.class). ThenRetrun(new RuntimeException.class). ThenRetrun(new RuntimeException.class);
retryTest.retryTest(in);
}
}
这很奇怪。升级 spring 版本后 root ..Mockito.any() 不工作,所以我必须使用准确的值来匹配模拟。