2015-08-11 4 views
4

Я работаю с Camel 2.15.2, Spring 4.1.7.RELEASE, CXF 3.0.4, Junit 4.12.Junit - загрузка Spring XML config через аннотации

Когда я запускаю следующий тест, загружая контекст Spring приложения не удается:

@RunWith(CamelSpringJUnit4ClassRunner.class) 
@BootstrapWith(CamelTestContextBootstrapper.class) 
@ContextConfiguration(locations= 
      { 
       "classpath:com/me/someFile.xml", 
       "classpath:META-INF/spring/someFile.xml" 
      }) 
public class MyRouteTest extends CamelTestSupport 
{ 
    //... 
} 

Вот исключение я получаю:

Caused by: java.lang.IllegalArgumentException: Cannot find RouteContext with id someRoute 
    at org.apache.camel.model.RouteContextRefDefinitionHelper.lookupRoutes(RouteContextRefDefinitionHelper.java:65) 

Но когда я запускаю этот тест, в Весенний прикладной контекст успешно загружается:

public class MyRouteTest extends CamelSpringTestSupport 
{ 
    @Override 
    protected AbstractApplicationContext createApplicationContext() 
    { 
     return new ClassPathXmlApplicationContext(new String[] 
       { 
        "classpath:com/me/someFile.xml", 
        "classpath:META-INF/spring/someFile.xml" 
       }); 
    } 

    //... 
} 

Почему это происходит в первом случае?

Не эти два способа загрузить эквивалент контекста приложения Spring?

+0

Вы пытались не расширять 'CamelTestSupport' при использовании аннотаций? – Ralf

+0

@ Ralf Нет, потому что 1. Я хотел бы использовать многие из своих классных методов в своем тесте 2. Если это имеет значение, это, по-моему, все еще не является ожидаемым поведением. – rapt

ответ

0

Я думаю, что ответ такой же, как этот вопрос. AbstractApplicationContext versus ApplicationContext Без просмотра ваших фактических файлов контекста было бы трудно понять, почему более строгая реализация ApplicationContext, требуемая аннотацией @ContextConfiguration, терпит неудачу. Надеюсь это поможет!

Смежные вопросы