一尘不染

Mockito:将真实对象注入私有@Autowired字段

spring

我正在使用Mockito @Mock@InjectMocks批注将依赖项注入到使用Spring批注的私有字段中@Autowired

@RunWith(MockitoJUnitRunner.class)
public class DemoTest {
    @Mock
    private SomeService service;

    @InjectMocks
    private Demo demo;

    /* ... */
}

public class Demo {

    @Autowired
    private SomeService service;

    /* ... */
}

现在,我还要将真实对象注入私有@Autowired字段(不使用setter)。这是否可能,或者该机制是否仅限于注入Mocks?


阅读 749

收藏
2020-04-15

共1个答案

一尘不染

使用@Spy注释

@RunWith(MockitoJUnitRunner.class)
public class DemoTest {
    @Spy
    private SomeService service = new RealServiceImpl();

    @InjectMocks
    private Demo demo;

    /* ... */
}

Mockito会将具有@Mock@Spy批注的所有字段视为要注入到带有@InjectMocks批注的实例中的潜在候选对象。在上述情况下,'RealServiceImpl'实例将被注入到“演示”中

2020-04-15