Mockito 无法为 @Async 方法注入模拟

Mad*_*uja 5 java junit unit-testing mockito

我有课

@EnableAsync
class A {

    @Autowired
    private SomeService someService;

    @Async
    public void someMethod() {
      this.someSerivice.call();
    }

}


class ATest {

    @Before
    public void before() {
      MockitoAnnotations.init(this)
    }

    @Autowired
    @InjectMocks
    private A a;

    @Mock
    private SomeService someService;

    @Test
    public void someTest() {

    }

}
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,someService 应该被 Mockito 模拟。然而,由于 的存在@Async,它不会被嘲笑,我收到了实际的实例。

有人遇到过这个吗?有什么解决办法吗?

Sri*_*i V 1

您可以在测试用例中手动设置模拟,如下所示

ReflectionTestUtils.setField(a, "someService", someService); 
Run Code Online (Sandbox Code Playgroud)