首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Junit中结合使用@InjectMocks和@Autowired注解

如何在Junit中结合使用@InjectMocks和@Autowired注解
EN

Stack Overflow用户
提问于 2015-12-03 21:58:53
回答 1查看 54.3K关注 0票数 56

我有一个A类,它使用了3个不同的带有自动装配的类

代码语言:javascript
运行
复制
public class A () {

    @Autowired
    private B b;

    @Autowired
    private C c;

    @Autowired
    private D d;
}

当测试它们时,我想只有2个类(B & C)作为模拟,并有D类被自动连接为正常运行,这段代码对我不起作用:

代码语言:javascript
运行
复制
@RunWith(MockitoJUnitRunner.class)
public class aTest () {

    @InjectMocks
    private A a;

    @Mock
    private B b;

    @Mock
    private C c;

    @Autowired
    private D d;
}

有没有可能这样做呢?

EN

回答 1

Stack Overflow用户

发布于 2017-06-12 17:43:06

我遇到了同样的问题,并尝试了Sajan Chandran的答案。它在我的例子中不起作用,因为我使用@SpringBootTest注解来加载所有bean的一个子集。我们的目标不是加载我正在模拟的bean,因为它们有许多其他依赖项和配置。

我发现以下解决方案的变体对我有效,它在正常情况下也是可用的。

代码语言:javascript
运行
复制
@RunWith(SpringRunner.class)
@SpringBootTest(classes={...classesRequired...})
public class aTest () {

    @Mock
    private B b;

    @Mock
    private C c;

    @Autowired
    @Spy
    private D d;

    @InjectMocks
    private A a;

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

}
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34067956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档