我有一个骆驼路线,它使用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中是否可能发生这种情况吗?
答案 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 {
...
}