Ich möchte ein Mockito-Scheinobjekt in eine Spring-Bohne (3+) injizieren, um sie mit JUnit zu testen. Meine Bean-Abhängigkeiten werden derzeit mithilfe der @Autowired
Anmerkung zu privaten Mitgliedsfeldern eingefügt.
Ich habe überlegt ReflectionTestUtils.setField
, die Bean-Instanz zu verwenden, die ich injizieren möchte, ist jedoch tatsächlich ein Proxy und deklariert daher nicht die privaten Mitgliedsfelder der Zielklasse. Ich möchte keinen öffentlichen Setter für die Abhängigkeit erstellen, da ich dann meine Schnittstelle nur zu Testzwecken ändern werde.
Ich habe einige Ratschläge der Spring-Community befolgt, aber der Mock wird nicht erstellt und die automatische Verkabelung schlägt fehl:
<bean id="dao" class="org.mockito.Mockito" factory-method="mock">
<constructor-arg value="com.package.Dao" />
</bean>
Der Fehler, auf den ich derzeit stoße, lautet wie folgt:
...
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)
Wenn ich den constructor-arg
Wert auf etwas Ungültiges setze, tritt beim Starten des Anwendungskontexts kein Fehler auf.