Тест весенней загрузки: как использовать только определенные компоненты?

#spring #spring-boot #spring-test

#весна #весенняя загрузка #весенний тест #spring-test

Вопрос:

У меня есть приложения для весенней загрузки с кучей компонентов. Изо дня в день их количество увеличивается. Поэтому мне все время нужно издеваться над новыми компонентами, иначе тесты завершатся неудачей. Итак, вопрос довольно прост: как заставить тесты spring boot использовать только несколько определенных компонентов из контекста приложения, а не все?

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

1. Перво-наперво. Это модульный тест или интеграционный тест. Что вы пытаетесь протестировать?

2. Модульные тесты весенней загрузки

3. Можете ли вы показать, какие аннотации вы используете? Скорее всего, вы используете аннотации для запуска интеграционных тестов ( @SpringBootTest ), чего вам определенно не следует делать

4. действительно, @SpringBootTest

Ответ №1:

Итак, я понял: вам нужно создать класс в тестовом пакете и указать тестовый класс для запуска spring оттуда, и вы должны определить, какой пакет нужно сканировать на наличие компонентов. Для этой цели используйте префикс scanBasePackages или аннотацию @ComponentScan («packageForScan»)

 @SpringBootApplication(scanBasePackages = {"com.domain.folder1.package1","com.domain.folder1.package2"})
    public static class CustomApplicationRunner {
        public static void main(String[] args) {
            SpringApplication.run(CustomApplicationRunner.class, args);
        }
    }
  

И в тестовом классе вы должны указать этот класс в качестве основного класса для запуска приложения.

 @SpringBootTest(classes = MyTestClass.CustomApplicationRunner.class)
@RunWith(SpringRunner.class)
public class MyTestClass {//tests}
  

Так вы можете включать или исключать (с помощью аннотации @ComponentScan) любые пакеты из добавления в контекст приложения.