Vorrei iniettare un oggetto simulato Mockito in un bean Spring (3+) ai fini del test unitario con JUnit. Le dipendenze dei miei bean sono attualmente iniettate utilizzando l' @Autowired
annotazione sui campi dei membri privati.
Ho preso in considerazione l'utilizzo ReflectionTestUtils.setField
ma l'istanza bean che desidero iniettare è in realtà un proxy e quindi non dichiara i campi dei membri privati della classe target. Non desidero creare un setter pubblico per la dipendenza in quanto modificherò la mia interfaccia esclusivamente a scopo di test.
Ho seguito alcuni consigli forniti dalla community di Spring, ma la simulazione non viene creata e il cablaggio automatico non riesce:
<bean id="dao" class="org.mockito.Mockito" factory-method="mock">
<constructor-arg value="com.package.Dao" />
</bean>
L'errore che attualmente riscontro è il seguente:
...
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)
Se imposto il constructor-arg
valore su qualcosa di non valido, non si verifica alcun errore all'avvio del contesto dell'applicazione.