Я хотел бы ввести объект Mockito mock в Spring (3+) bean для целей модульного тестирования с помощью JUnit. Мои зависимости 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
на что-то недопустимое, при запуске контекста приложения не возникает ошибки.