Je voudrais injecter un objet maquette Mockito dans un bean Spring (3+) à des fins de tests unitaires avec JUnit. Mes dépendances de bean sont actuellement injectées en utilisant l' @Autowired
annotation sur les champs membres privés.
J'ai envisagé d'utiliser ReflectionTestUtils.setField
mais l'instance de bean que je souhaite injecter est en fait un proxy et ne déclare donc pas les champs membres privés de la classe cible. Je ne souhaite pas créer un setter public pour la dépendance car je modifierai alors mon interface uniquement à des fins de test.
J'ai suivi quelques conseils donnés par la communauté Spring, mais la maquette n'est pas créée et le câblage automatique échoue:
<bean id="dao" class="org.mockito.Mockito" factory-method="mock">
<constructor-arg value="com.package.Dao" />
</bean>
L'erreur que je rencontre actuellement est la suivante:
...
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)
Si je définit la constructor-arg
valeur sur quelque chose de non valide, aucune erreur ne se produit lors du démarrage du contexte d'application.