我想使用DI框架(例如Spring或GUICE)
我是否必须使用接口包装任何Service-object以使DI框架起作用?
当我写UT时,
我可以将模拟框架与它结合使用(例如mockito)吗?
组合模拟FW和DI FW时有什么值得注意的事情吗?
我有点困惑,因为DI FW也意味着将实现从PROD改为伪造的。否?
答案 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/