CDI: отключить запуск событий и наблюдателей во время модульных тестов

#java #unit-testing #cdi #jboss-arquillian

#java #модульное тестирование #cdi #jboss-arquillian

Вопрос:

В проекте у меня есть компонент @SessionScoped под названием «OrganizationManager», который запускает событие, когда определенное поле изменяет свое значение:

 event.fire(new OrganizationChangedEvent());
  

Метод, называемый «reloadOnOrganizationChange» другого компонента, наблюдает за событием и делает что-то вроде этого

 public void reloadOnOrganizationChange(@Observes OrganizationChangedEvent organizationChangedEvent){
 ...    
}
  

Все работает, как ожидалось.

Но во время модульного тестирования я не хочу, чтобы запуск / наблюдение событий происходили, поскольку я хочу протестировать аспекты, не связанные с механизмом событий / наблюдателей, а события создают нежелательные зависимости от классов наблюдения. В моем случае я полагаюсь на Arquillian в своих модульных / интеграционных тестах.

Каков наилучший способ сделать это? Могу ли я отключить события для тестирования?

Комментарии:

1. Хм. Вы могли бы удалить класс, содержащий метод reload, из установки Arquillian. Тогда наблюдателя больше нет. На самом деле, слишком много классов на этапе установки больше похоже на интеграционный тест.

2. Возможно, вы захотите добавить некоторый код из своего тестового класса к своему вопросу.

3. @Seelenvirtuose Спасибо — вы, вероятно, правы. Я только что обнаружил, что, добавляя целые пакеты, я добавил классы в развертывание не детализированным способом. Попробую..