JUnitでのユニットテストの目的で、MockitoモックオブジェクトをSpring(3+)Beanに挿入したいと思います。現在、私のBeanの依存関係は@Autowired
、プライベートメンバーフィールドのアノテーションを使用して注入されています。
使用を検討しましたReflectionTestUtils.setField
が、注入したいBeanインスタンスは実際にはプロキシであるため、ターゲットクラスのプライベートメンバーフィールドを宣言していません。テストのためだけにインターフェイスを変更するため、依存関係へのパブリックセッターを作成したくありません。
私はSpringコミュニティからのアドバイスに従いましたが、モックが作成されず、自動配線が失敗します。
<bean id="dao" class="org.mockito.Mockito" factory-method="mock">
<constructor-arg value="com.package.Dao" />
</bean>
現在発生しているエラーは次のとおりです。
...
Caused by: org...NoSuchBeanDefinitionException:
No matching bean of type [com.package.Dao] found for dependency:
expected at least 1 bean which qualifies as autowire candidate for this dependency.
Dependency annotations: {
@org...Autowired(required=true),
@org...Qualifier(value=dao)
}
at org...DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(D...y.java:901)
at org...DefaultListableBeanFactory.doResolveDependency(D...y.java:770)
constructor-arg
値を無効な値に設定しても、アプリケーションコンテキストの起動時にエラーは発生しません。