Загрузка файла свойств Camel из теста интеграции Junit - PullRequest
0 голосов
/ 04 января 2019

У меня есть Camel Route, который использует CDI для загрузки файла свойств из каталога конфигурации JBoss ... отлично работает .

Что мне нужно сделатьэто загрузить одно из свойств, которые загружаются в тесте интеграции Arquillian, который я пишу.

Пример:

Содержимое файла Fiddler.properties в каталоге конфигурации JBoss

silly.value = Смеющийся
Серьезное.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 теперь доступно в главном маршруте Camel как {{silly.value}} или {{серьезно.значение}}

Проблема:

Я хотел бы загрузить / ссылаться на одно из этих значений свойств из моего теста интеграции Arquillian... вероятно, в методе @BeforeClass ... что-то вроде ниже:

@RunWith(Arquillian.class)
public class MainRouteIT {

.
.
Boolean allOK = false;

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

Есть идеи, возможно ли что-то подобное в Camel в рамках теста Арквилиана?

1 Ответ

0 голосов
/ 14 января 2019

Вот решение, которое мы используем (но без Arquillian):

Сначала определите альтернативу CDI для компонента "properties" Camel, который будет использовать значения свойств тестирования.

Затем аннотируйтеВаш юнит-тест для использования альтернативных производителей компонентов 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 {
    ...
}   
...