如何在java中结合mock和DI?

时间:2014-10-12 10:01:46

标签: java unit-testing dependency-injection mocking

我想使用DI框架(例如Spring或GUICE)

我是否必须使用接口包装任何Service-object以使DI框架起作用?

当我写UT时,

我可以将模拟框架与它结合使用(例如mockito)吗?

组合模拟FW和DI FW时有什么值得注意的事情吗?

我有点困惑,因为DI FW也意味着将实现从PROD改为伪造的。否?

1 个答案:

答案 0 :(得分:1)

正如@BoristheSpider在评论中提到的那样,在单元测试期间,你根本不应该使用Spring上下文。因此,您需要自己将依赖关系(伪造或真实)连接到测试对象中。

一种可能的方法是使用Mockito框架的字段注入+ @Injection / @Spy / @Mock功能。 See example here

使用spring的更好方法是使用构造函数注入。在布线和创建bean时,DI框架不使用Reflection。

在单元测试中,您可以通过构造函数传递伪造的或真实的依赖项。

我建议围绕构造函数和场注入进行研究。您可以从我的博客开始:http://lkrnac.net/blog/2014/02/promoting-constructor-field-injection/