2014-01-23 1 views
0

В моем приложении много тестов интеграции на основе Unitils, в котором используется @SpringApplicationContext (с различными весенними xmls из разных модулей). Чтобы уменьшить количество создаваемых весенних контекстов, мы планировали создать базовый тестовый класс и инициализировать весенний контекст только из этого базового класса и сделать все остальные тесты для расширения этого базового класса.Spring xml инициализирует beans-компоненты при объявлении в дочернем классе, но если то же самое объявлено в инициализации компонента родительского класса, то происходит сбой

базовый класс:

com.org.module1.mypack;

@SpringApplicationContext ({ "весна-module1.xml", "весна-module2.xml", "весенне-module3.xml"}) общественного абстрактного класса BaseTest { ... }

класс ребенка до изменения:

com.org.module1.mypack.performance;

@SpringApplicationContext ({ "весна-module4.xml"}) общественного класса ChildTest простирается BaseTest { .. }

базового класса после изменения:

com.org.module1.mypack;

@SpringApplicationContext ({ "весна-module1.xml", "весна-module2.xml", "весенне-module3.xml", "весна-module4.xml"}) общественного абстрактного класса BaseTest { ... }

класс ребенка после изменения:

com.org.module1.mypack.performance;

// @ SpringApplicationContext ({ "весна-module4.xml"}) общественного класса ChildTest расширяет BaseTest { .. }

Теперь я получаю ниже сообщение об ошибке, и мой контекст не создается: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.org.module5.prepare.MyBean] 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), @org.springframework.beans.factory.annotation.Qualifier(value=myBean)}

Когда spring-module4.xml находился в дочернем классе, контекст был создан нормально, и все тесты выполнялись как обычно.

Примечание: все файлы весны xml находятся в src/main/resources, кроме spring-module4.xml находится в src/test/resources

+0

'NoSuchBeanDefinitionException' явно выражает, что родительский класс не имеет видимости MyBean. Это звонит кому-нибудь? – EmeraldTablet

ответ

0

По умолчанию аннотации на классы не наследуются, если они не имеют @Inherited в их определении.

+0

Это означает, что вы должны также поставить @SpringApplicationContext на ребенка. Но следуя документации: http://www.unitils.org/tutorial-spring.html, вы можете сохранить свою новую конфигурацию по своему усмотрению. –

+0

Я попытался добавить '@ SpringApplicationContext' к дочернему классу ... но все равно получить те же ошибки – EmeraldTablet