Spring boot - запуск интеграционных тестов в интерактивном режиме - PullRequest
2 голосов
/ 16 мая 2019

При разработке веб-приложения модуль инструментов SpringBoot удобен для ускорения цикла компиляции и запуска. Однако я не смог найти подобную функцию для интеграционных тестов.

В частности, скажем, у меня есть интеграционный тест (помеченный @RunWith(SpringRunner.class) и @SpringBootTest), который запускает веб-сервер на случайном порте и тестирует некоторые из конечных точек REST. Я хотел бы иметь интерактивный тестовый прогон, который не будет убивать процесс, когда тестовый случай терпит неудачу. Вместо этого он будет ожидать изменений в коде и перезагрузит и повторно запустит тесты, если изменения будут обнаружены (как горячая замена в инструментах разработки)

Мои поиски этой функции не увенчались успехом, поэтому я хотел бы знать, каков будет самый быстрый способ реализации этой функции. Учитывая популярность Springs, есть ли причина, по которой не существует широко известного способа сделать это?

EDIT

Немного покопавшись в исходном коде, я нашел следующий фрагмент кода.

/**
 * Default {@link RestartInitializer} that only enable initial restart when running a
 * standard "main" method. Skips initialization when running "fat" jars (included
 * exploded) or when running from a test.
 *
 * @author Phillip Webb
 * @author Andy Wilkinson
 * @since 1.3.0
 */
public class DefaultRestartInitializer implements RestartInitializer {

    private static final Set<String> SKIPPED_STACK_ELEMENTS;

    static {
        Set<String> skipped = new LinkedHashSet<>();
        skipped.add("org.junit.runners.");
        skipped.add("org.junit.platform.");
        skipped.add("org.springframework.boot.test.");
        skipped.add("cucumber.runtime.");
        SKIPPED_STACK_ELEMENTS = Collections.unmodifiableSet(skipped);
    }
    ...

Отсюда я понимаю, что автор явно отключил поддержку тестирования. Кто-нибудь может объяснить это?

...