繁体   English   中英

使用CamelBlueprintTestSupport时的NPE

[英]NPE when using CamelBlueprintTestSupport

我想用CamelBlueprintTestSupport创建集成测试。 我启动我的Camelcontext,起初看起来还不错:

[main] ingRestJobAdvertApiOfFirstbird INFO跳过CamelContext作为系统属性skipStartingCamelContext设置为true。 [main] BlueprintCamelContext INFO Apache Camel 2.15.1.redhat-620133(CamelContext:camel-1)即将开始

路线也开始了。 但是我只是在我的控制台中收到此消息:

在主循环中,我们遇到了严重问题:org.apache.felix.fileinstall.internal.DirectoryWatcher.run中的java.lang.NullPointerException java.lang.NullPointerException(DirectoryWatcher.java:303)

骆驼版: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;
}

}

骆驼有一个已知问题: https//issues.apache.org/jira/browse/CAMEL-7985

解决方案,适用于我发布在这里: https//issues.jboss.org/browse/ENTESB-2225 我们在这里复制有用的评论:

当将项目升级到6.2 GA时 - 我的驼峰测试蓝图单元测试都会过度抛出这个NullPointerException。 我查看了错误报告的解决方案,并将其应用于我的poms,并清除了所有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>

经过一些进一步的研究后,我找到了解决方法。 我必须阻止捆绑org.apache.felix.fileinstall开始。 这可以通过覆盖CamelBlueprintTestSupport中的getBundleFilter()来实现:

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

我仍然不知道这是一般方法还是我的项目设置问题...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM