jab*_*sad 12 java spring integration-testing mockito spring-java-config
我正在尝试@Autowired
用Mockito模拟对象替换对象.通常的方法是使用Springockito使用xml:
<mockito:mock id="SomeMock" class="com.package.MockInterface" />
Run Code Online (Sandbox Code Playgroud)
目前我正在尝试使用Spring的JavaConfig来完成这项工作.突然之间,Java表达式比xml更加冗长:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class MyTestClass {
@Configuration
static class Config {
@Bean
public MockInterface somethingSpecial() {
return Mockito.mock(MockInterface.class);
}
}
@Autowired MockInterface mockObj;
// test code
}
Run Code Online (Sandbox Code Playgroud)
我发现了一个名为Springockito-annotations的库,它允许您执行以下操作:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader=SpringockitoContextLoader.class)
public class MyTestClass {
@Autowired @ReplaceWithMock MockInterface mockObj;
// test code
}
Run Code Online (Sandbox Code Playgroud)
显然,一大堆漂亮:)唯一的问题是,这种情况下加载程序不会允许我使用@Configuration
和JavaConfig其他豆类(如果我这样做,春天抱怨说没有匹配自动连接领域的考生).
你们知道如何让Spring的JavaConfig和Springockito-annotations发挥得更好吗?或者,是否有另一种创建模拟的简写?
作为一个很好的奖励,使用Springockito和xml配置,我能够模拟出具体的类而不为其依赖项提供自动装配候选(如果有的话).没有xml这是不可能的吗?
似乎SpringockitoContextLoader
扩展了GenericXmlContextLoader,其描述为:
AbstractGenericContextLoader 的具体实现,用于从 XML 资源读取 bean 定义。
所以目前您只能使用 xml bean 定义。
您可以编写自己的上下文加载器,从SpringockitoContextLoader
类中获取相关部分。看一下这里开始,也许你可以扩展AnnotationConfigContextLoader例如?
归档时间: |
|
查看次数: |
9335 次 |
最近记录: |