私のプロジェクトでは、 @Service アノテーションが付いたサービスがあります。
@Service
public class ExampleService { ... }
次の方法でテスト用の構成ファイルを使用して、このサービスを Mockito-mock でオーバーライドしたいと思います。
public class TestContext{
@Bean
@Primary
public ExampleService exampleService(){
return mock(ExampleService.class);
}
}
そして私のテストクラスでは:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { WebContext.class, TestContext.class})
@WebAppConfiguration
public class TestExample{...}
何らかの理由でモックが注入されていません。これを機能させる唯一の方法は、@Service を使用せず (@Component でも同じ問題が発生します)、WebContext で Bean アノテーション付きメソッドを使用して ExampleService をロードし、WebContext.class の背後に TestClass を配置することです。 ContextConfiguration アノテーション (ここに書いたコードのように)。理由がわかりません。 @Service アノテーションを使い続ける方法を知りたいです。