@Autowired
オブジェクトを Mockito モック オブジェクトに置き換えようとしています。これを行う通常の方法は、Springockito を使用して xml を使用することでした。
<mockito:mock id="SomeMock" class="com.package.MockInterface" />
現在、私は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
}
Springockito-annotations というライブラリを発見しました。これにより、次のことが可能になります。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader=SpringockitoContextLoader.class)
public class MyTestClass {
@Autowired @ReplaceWithMock MockInterface mockObj;
// test code
}
明らかに、はるかにきれいです :) 唯一の問題は、このコンテキスト ローダーでは他の Bean に JavaConfig を使用できないことです@Configuration
(そうすると、Spring はそれらの自動配線されたフィールドに一致する候補がないと文句を言います)。
Spring の JavaConfig と Springockito-annotations をうまく機能させる方法を知っていますか? または、モックを作成するための別の省略形はありますか?
おまけとして、Springockito と xml 構成を使用して、依存関係 (存在する場合) にオートワイヤー候補を提供することなく、具体的なクラスをモックアウトすることができました。これはxmlなしでは不可能ですか?