2014-02-05 3 views
2

я пытаюсь реализовать PaxExam протестировать план верблюда маршрут:PaxExam и CmPropertyPlaceholder

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0" 
    xmlns:camel="http://camel.apache.org/schema/blueprint" 
    xsi:schemaLocation=" 
    http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd 
    http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0 http://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.0.0.xsd 
    http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd"> 

<cm:property-placeholder persistent-id="paxexam.HelloBean"> 
    <cm:default-properties> 
    <cm:property name="greeter" value="Hey"/> 
    </cm:default-properties> 
</cm:property-placeholder> 

<bean id="helloBean" class="me.examples.paxexam.HelloBean"> 
    <property name="say" value="${greeter} from Camel"/> 
</bean> 

[...] 

Если пучок развертывается в Karaf он работает, но когда я пытаюсь запустить его в тесте PaxExam он терпит неудачу с NullPointerException, когда CmPropertyPlaceholder инициализируется:

Caused by: java.lang.NullPointerException 
    at java.util.Hashtable.put(Hashtable.java:394)[:1.6.0_45] 
    at org.apache.aries.blueprint.compendium.cm.CmPropertyPlaceholder.init(CmPropertyPlaceholder.java:102) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.6.0_45] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)[:1.6.0_45] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)[:1.6.0_45] 
    at java.lang.reflect.Method.invoke(Method.java:597)[:1.6.0_45] 
    at org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:225)[10:org.apache.aries.blueprint:0.3.2] 
    at org.apache.aries.blueprint.container.BeanRecipe.invoke(BeanRecipe.java:838)[10:org.apache.aries.blueprint:0.3.2] 
    at org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:638)[10:org.apache.aries.blueprint:0.3.2] 

Это мой метод PaxExam Конфигурация:

@Configuration 
public static Option[] configure() throws Exception { 
    return new Option[] { 
    karafDistributionConfiguration().frameworkUrl(getFrameworkUrl("karaf")) 
    .karafVersion("2.2.11") 
    .useDeployFolder(false) 
    .unpackDirectory(new File("target/exam/unpack")), 
    logLevel(LogLevel.INFO), 
    keepRuntimeFolder(), 
    replaceConfigurationFile("etc/activemq-broker.xml", new File("src/test/resources/activemq-broker-test.xml")), 

    features(getKarafStandardFeaturesUrl(), "config", "http"), 
    features(getActiveMqFeaturesUrl(), "activemq-blueprint", "activemq-camel"), 
    features(getCamelFeaturesUrl(), "camel-core", "camel-blueprint", "camel-jms", 
        "camel-cxf", "camel-test", "camel-jackson", "camel-quartz"), 
    features(getSmixFeaturesUrl(), "saaj", "activemq-broker"), 

    streamBundle(bundle().add(Hello.class) 
     .add(HelloBean.class) 
     .add("OSGI-INF/blueprint/blueprint.xml", 
      new File("src/main/resources/OSGI-INF/blueprint/blueprint.xml").toURL()) 
     .set(Constants.BUNDLE_SYMBOLICNAME, "me.examples.paxexam") 
    .set(Constants.IMPORT_PACKAGE, "org.osgi.service.blueprint,org.slf4j") 
     .set(Constants.DYNAMICIMPORT_PACKAGE, "*") 
    .build()).start() 
    }; 
} 

Нужно ли мне что-то делать, чтобы использовать cm: property-placeholder с PaxExam? (удаление тега сделать штраф тестовым прогоном)

Thx заранее, Приветствия

ответ

1

Это испытание Karaf Pax-экзамен? Если это так, вам нужно убедиться, что у вас есть эти свойства, которые вы хотите установить с помощью службы администрирования конфигурации. Если это простой тест Pax-Exam, вы говорите, что вам нужно убедиться, что у вас есть служба ConfigurationAdmin. Посмотрите на this sample для более поздних версий.

+0

Это именно то, что мне нужно, спасибо большое! Смешно я понимаю, что мой код на самом деле уже основан на вашем проекте на github, и все же вы предоставляете мне решение (опять же) ... вы мой спаситель :) – DaFanc

+0

приветствую вас, рад, что это помогло :) –

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