#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) любые пакеты из добавления в контекст приложения.