Spring:覆盖/模拟依赖项的依赖性

时间:2014-01-23 17:16:03

标签: java spring dependency-injection mocking

在项目上运行测试用例需要花费大量时间。在诊断此问题时,我们已确定某个服务呼叫正在拖动其数字支脚。我们想通过Spring来模拟它,就像我们在其他项目中所做的那样,但是这个项目代替服务调用(它调用一个项目,调用一个项目,调用服务;每个项目都有自己的spring配置)。 / p>

Project Alpha - > Project Bravo - > Project Charlie的服务Foo

问题: Project Alpha中对Spring配置的修改是否允许模拟Service Foo,或者Project Bravo中的Spring配置是否不受其.war文件之外的配置的影响。

注意:这可以通过将模拟配置放在Project Bravo中来实现,但在这种情况下不是一个选项。

1 个答案:

答案 0 :(得分:0)

石器时代版

Springockito

  

这是对spring的一个小扩展,简化了在intergation tests的相关上下文xml文件中创建mockito模拟的方法。

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:mockito="http://www.mockito.org/spring/mockito"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.mockito.org/spring/mockito http://www.mockito.org/spring/mockito.xsd">
...
    <mockito:mock id="innerBean" class="my.project.InnerBean" />
..
</beans>

新时代版

尝试@ReplaceWithMock注释

@ContextConfiguration(loader = SpringockitoContextLoader.class,
locations = "classpath:/context.xml")
public class SpringockitoAnnotationsMocksIntegrationTest extends AbstractJUnit4SpringContextTests {

    @ReplaceWithMock
    @Autowired
    private InnerBean innerBean;

...
}

https://bitbucket.org/kubek2k/springockito/wiki/springockito-annotations