2015-07-27 2 views
4

Я хочу создать интеграционный тест с CamelBlueprintTestSupport. я начинаю Camelcontext, который выглядит хорошо на первом:NPE при использовании CamelBlueprintTestSupport

[главный] ingRestJobAdvertApiOfFirstbird INFO Пропуск начиная CamelContext, как свойство системы skipStartingCamelContext устанавливаются, чтобы быть правдой. [Основной] BlueprintCamelContext ИНФО Apache верблюд 2.15.1.redhat-620133 (CamelContext: верблюд-1) начинает

Маршруты также начинают. Но тогда я просто получаю это сообщение в моей консоли:

В главном цикле, у нас есть серьезные проблемы: java.lang.NullPointerException java.lang.NullPointerException в org.apache.felix.fileinstall.internal.DirectoryWatcher .run (DirectoryWatcher.java:303)

Camel Версия: 2.15.1.redhat-620133

испытуемой единицы:

public class WhenUsingRestJobAdvertApiOfdemo extends CamelBlueprintTestSupport { 

@Override 
protected String getBlueprintDescriptor() { 
    return "OSGI-INF/blueprint/blueprint.xml"; 
} 

@Override 
protected String[] loadConfigAdminConfigurationFile() { 
    return new String[]{"src/test/resources/jobwebsite.connector.properties", "jobwebsite.connector"}; 
} 

@Test 
public void testRoute() throws Exception { 

    context.addRoutes(new MockServiceEndpoints()); 
    JobRequest jobRequest = readJoData(); 
    template.sendBody("direct:createjobIndemo", jobRequest); 

    String expectedBody = "<matched/>"; 
    template.sendBodyAndHeader(expectedBody, "foo", "bar"); 
} 

public JobRequest readJoData() throws IOException { 

    ObjectMapper mapper = new ObjectMapper(); 

    JobRequest jobRequest = mapper.readValue(new File("src/test/resources/demo-data/job-Advert/job-123.json"), JobRequest.class); 

    return jobRequest; 
} 

}

ответ

6

Eсть известная проблема в верблюд: https://issues.apache.org/jira/browse/CAMEL-7985

решение, которое работает для меня размещена здесь: https://issues.jboss.org/browse/ENTESB-2225. Скопируем полезный комментарий здесь:

При наращивании проектов до 6.2 GA - мои тесты на блок-тест верблюда полностью исключают это исключение NullPointerException. Я посмотрел на разрешение отчета об ошибке и применил это к моим помадам, и он прояснил все NPE. Вот что я сделал:

<dependency> 
     <groupId>org.apache.camel</groupId> 
     <artifactId>camel-test-blueprint</artifactId> 
     <scope>test</scope> 
     <!-- Exclude in order to prevent --> 
     <!-- java.lang.NullPointerException at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:303) --> 
     <exclusions> 
      <exclusion> 
       <groupId>org.apache.felix</groupId> 
       <artifactId>org.apache.felix.fileinstall</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

Кроме того, я должен был добавить следующую зависимость:

<dependency> 
    <groupId>org.apache.felix</groupId> 
    <artifactId>org.apache.felix.utils</artifactId> 
    <scope>test</scope> 
</dependency> 
+0

Это не ответ. Подумайте о том, чтобы положить это как комментарий. – Nilesh

+0

Я совершенно новый на SO и до сих пор не могу оставлять комментарии ... –

3

После некоторых дальнейших исследований я нашел обходное решение для этого. Я должен предотвратить запуск пакета org.apache.felix.fileinstall. Это может быть достигнуто путем переопределения getBundleFilter() из CamelBlueprintTestSupport:

@Override 
protected String getBundleFilter() { 
    return "(!(Bundle-SymbolicName=org.apache.felix.fileinstall))"; 
} 

Я до сих пор не знаю, если это общий подход, или если я проблема с моей установки проекта ...

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