Весеннее тестирование с JUnit4 Runner не работает после пробного использования разных решений - PullRequest
0 голосов
/ 16 ноября 2018

При автоматическом подключении моего весеннего тестового класса с помощью JUnit4 Test Runner контекстный запуск выдает следующее исключение:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.mypackage.TestClass': Injection of autowired dependencies failed; 
nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.mypackage.ServiceClass com.mypackage.TestClass.service; 
nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.mypackage.ServiceClass] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

Мои настройки

TestClass аннотируется следующим образом

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:spring/testContext.xml"})

Поля с автопроводкой помечаются так:

 @Autowired
 ACrudRepository repository; // is autowired

 @Autowired
 @Qualifier("service")
 ServiceClass service; // is NOT autowired

testContext.xml имеет следующее определение Бина (и некоторые другие):

<bean class="com.mypackage.ServiceClass" id="service">
    <property name="someBoolean" value="false"/>
    <property name="otherBoolean" value="false"/>
    <property name="someList">
      <list><value>withOneValue</value></list>
    </property>
</bean>

<jpa:repositories base-package="com.mypackage"/>

Что я пробовал:

1 Ответ

0 голосов
/ 23 ноября 2018

Проблема в этом проекте (который здесь не упоминался) заключалась в теге <tx:annotation-driven/> и аннотации @Transactional в компоненте с автопроводкой. В этой аннотации обычно используется прокси-интерфейс на основе интерфейса Java, который не может быть подключен автоматически, поскольку они не относятся к одному и тому же типу класса.

Чтобы исправить это, мы использовали тег <tx:annotation-driven proxy-target-class="true"/>.

Большое спасибо за этот ответ: https://stackoverflow.com/a/19624412

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...