Модульные тесты Quarkus исключают класс

Я переезжаю из Торнтейла в Кваркус. В своих тестах я использовал метод @deployment, в который я помещал только то, что требовалось тестам. В частности, я не помещал класс с аннотацией @Startup (потому что я не хотел это тестировать ...). Когда я перешел в QUARKUS, я подавил статический метод de @deployment, затем, когда я запускаю тесты, запускается @Startup ... и происходит много плохих вещей, которые мешают мне тестировать то, что я хочу протестировать (ну, он вылетает, потому что он пытается подключиться к недоступным службам).

Возникает вопрос: есть ли способ исключить какой-либо пакет или класс при запуске теста с помощью quarkusTest?


person Lbro    schedule 23.09.2020    source источник


Ответы (1)


Наконец-то я создал класс:

@ApplicationScoped
public class ApplicationLifeCycle {
private final Logger log = Logger.getLogger(getClass());

@Inject
Startup startup;

void onStart(@Observes StartupEvent ev) {
    log.info("The application is starting with profile " + ProfileManager.getActiveProfile());
    if (!ProfileManager.getActiveProfile().equalsIgnoreCase("test")) {
        startup.getModel();
    }
}

void onStop(@Observes ShutdownEvent ev) {
    log.info("The application is stopping...");
    startup.stopMQ();
}
}

Немного некрасиво, не правда ли? Есть ли способ лучше?

person Lbro    schedule 23.09.2020
comment
Я новичок в Quarkus, и у меня точно такая же проблема ... Я хочу протестировать уровень сервиса, подключающийся к некоторым сторонним сервисам, которые я не хочу запускать в тесте. Я высмеиваю и аннотирую эту службу как @InjectMock, но кажется, что @Observes StartupEvent все еще запускается в конкретном экземпляре службы - конечно, вызывая подключение службы к сторонним службам. Я собираюсь применить аналогичное решение, как и вы, но мне неприятно иметь дополнительный код, чтобы тесты работали. - person NejcT; 02.10.2020