我使用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;

    /* ... */
}

现在,我还想将real个对象注入私有@Autowired字段(不带setter).这是可能的吗?还是该机制仅限于注射Mock?

推荐答案

使用@Spy注释

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

    @InjectMocks
    private Demo demo;

    /* ... */
}

Mockito将把具有@Mock@Spy注释的所有字段视为潜在的候选字段,以将其注入到带有@InjectMocks注释的实例中.在上面的例子中,'RealServiceImpl'个实例将被注入到"demo"中

有关更多详细信息,请参阅

Mockito-home

@Spy

@Mock

Java相关问答推荐

在FML中删除关键帧动画

将具有多个未知字段的SON映射到Java POJO

BiPredicate和如何使用它

Mat. n_Delete()和Mat. n_release的区别

Cucumber TestNG Assert失败,出现java. lang. Numbercycle异常

inteliJ中是否有一个功能可以自动在块注释中的/*后面添加一个空格?''

如何粘合(合并)文件Lucene?

对Java中的通配符参数的混淆

我不能再在Android Studio Hedgehog上用Java语言创建新项目了吗?

如何对多个字段进行分组和排序?

Javadoc在方法摘要中省略方法

Docker不支持弹性APM服务器

在向WebSphere中的文档添加元素时iText挂起

当b是一个字节并且在Java中值为-1时,为什么b>;>;>;1总是等于-1?

嘲笑黄瓜中的对象

Java嵌套流查找任意值

接受类及其接口的Java类型(矛盾)

如何在Struts2中使用操作类中的结果注释重定向到不同的命名空间

Java CDI:@Singleton@Startup@Inject无法实现接口

当我将JTextField的getText函数与相等的String进行比较时;t返回true