从Junit Integration Test加载骆驼属性文件

时间:2019-01-04 00:56:42

标签: apache-camel jboss-arquillian

我有一个骆驼路线,它使用CDI从JBoss配置目录中加载属性文件... 工作完美

我需要做的是加载其中加载的属性之一 我正在编写的Arquillian集成测试。

示例:

JBoss配置目录中Fiddler.properties文件的内容

silly.value =笑
Serious.value =政治

示例Producer类以加载属性

     /**  
      * Create the Camel properties component using CDI @Produces  
      */  
        @Produces  
        @Named("properties")  
        PropertiesComponent propertiesComponent() {  
            final PropertiesComponent component = new PropertiesComponent();

            // load JBoss properties file  
            component.setLocation(  
             "file:${jboss.server.config.dir}/fiddler.properties"
            );
            return component;
        }

Fiddler.properties文件中的给定属性现在可以在主骆驼路线中以 {{silly.value}} {{serious.value}} 使用

问题:

我想做的是从Arquillian Integration Test中加载/引用这些属性值之一……可能是在@BeforeClass方法中……如下所示:

@RunWith(Arquillian.class)
public class MainRouteIT {

.
.
Boolean allOK = false;

@BeforeClass
public static void setupTest() throws Exception {
    allOK = new testCheck(
                        {{silly.value}}, {{serious.value}}
                      );
 .
 .

您知道在Arquillian测试中在Camel中是否可能发生这种情况吗?

1 个答案:

答案 0 :(得分:0)

这是我们正在使用的解决方案(但没有Arquillian):

首先为骆驼“属性”组件定义CDI替代方案,它将使用测试属性值。

然后注释您的单元测试,以使用替代的Camel组件生产商。

@Alternative
public class CamelAlternatives {

    @Produces
    @ApplicationScoped
    @Named("properties")
    public PropertiesComponent propertiesComponent() {      
        PropertiesComponent component = new PropertiesComponent();      
        component.setLocations( Arrays.asList("classpath:common.properties", "classpath:testing.properties") );
        return component;
    }

@RunWith(CamelCdiRunner.class)
@Beans(alternatives = {CamelAlternatives.class})
public class MyUnitTest {
    ...
}