Как подготовить базовый тест для планировщика TimerService? - PullRequest
0 голосов
/ 08 июля 2019

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

@Startup
@Singleton
public class GeneralDataExecutor {

    @Resource
    private TimerService timerService;

    private Timer timer;

    @PostConstruct
    public void init() {
            timer = timerService.createCalendarTimer(createScheduleExpression(), createTimerConfig());
        }
    }

    @Timeout
    public void execute() {
        //some code
    }
}

Любые идеи / советы, как добиться цели?

1 Ответ

0 голосов
/ 09 июля 2019

Существуют фреймворки, которые помогают издеваться над ejb-контейнером и помогают обрабатывать асинхронность.

Посмотрите на Пример объекта-таймера

@Stateless
public class StatelessTimerEJB extends CountingBean {

   @PostConstruct
   public void postConstruct() {
       setPostConstructCalled();
   }

   @Timeout
   public void callAsynch()  {
       if (isPostConstructCalled()) {
           logcall();
           return;
       } else {
           logger.error("postconstruct did not work for this instance");
       }
   }
}

и как это тестируется с помощью ioc-unit Asynchronousmanager в

TestAsynchronousManager

...