Исключить несколько аннотированных классов @Component в SpringBootTest - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть несколько @Component аннотированных классов, где я инициализировал свои конфигураторы, такие как DBConfigurer, SecurityConfigurer, JmxConfigurer и многие другие.

При добавлении функционального теста я хочу, чтобы не было загружено несколько классов. Могу ли я исключить несколько конфигураторов, определенных выше.

Мой тестовый класс, который я определил, как показано ниже:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = { ServiceStarter.class }, properties = { "jmx.rmi.port=19057", "hostname=localhost" })
@ContextConfiguration(classes = {ControllerTest.BeansOverrideConfigurer.class})
public class ControllerTest {
    // All test here.
}

Я могу go с определением выбранных конфигураторов внутри блока @ContextConfiguration в тестовом классе , но я не хочу go, так как в будущем, если кто-то добавит новый конфигуратор, он должен автоматически импортироваться в тестовом примере.

1 Ответ

0 голосов
/ 22 февраля 2020

Используйте @Profile для тех компонентов, которые вы не хотите загружать во время определенных профилей c, например, при тестировании (ie только во время, например, производства и разработки).

@Component
@Profile("production")
public class ComponentClass {}

И затем определите @ActiveProfile, который вы хотите запустить во время тестов, например,

@SpringBootTest
@ActiveProfiles("test")
public class ControllerTest {}

Для получения дополнительной информации вы можете обратиться к документам Spring Framework и документам Spring Boot docs.spring.io

...