2017-12-15 12 views
0

@SpringBootTestMyApplicationContextInitializer 실행없이 "깨끗한"컨텍스트에서 실행하려고합니다.@SpringBootTest에서 ApplicationContextInitializers를 제외하는 방법은 무엇입니까?

org.springframework.context.ApplicationContextInitializer=\ 
com.eremic.myapp.MyApplicationContextInitializer 

테스트 클래스 :

@SpringBootTest(webEnvironment = RANDOM_PORT) 
@RunWith(SpringRunner.class) 
@ContextConfiguration(classes = TestContext.class) 
public class UsersControllerTest {} 

테스트 구성 :

@SpringBootConfiguration 
public class TestContext {} 

MyApplicationContextInitializer은 이런 compile-scope 의존성에 spring.factories 파일 내에 포함

에서 MyApplicationContextInitializer을 제외 할 수있는 방법이 있습니까?

나는 이미 excludeFilters @ComponentScan.Filters에 지쳐 있었지만 ApplicationContextInitializer에는 아무런 영향을 미치지 않습니다.

또한, 나는 @SpringBootApplicationTestContext에 주석 및/또는 exclude = MyApplicationContextInitializer.class를 사용하는 scanBasePackages와 구성 요소 검색을 제한하는 시도했지만 아무 효과도 없습니다.

@SpringBootTest에서 MyApplicationContextInitializer이 실행되는 것을 막는 유일한 방법은 MyApplicationContextInitializer이 선언 된 maven 종속성을 제거하는 것입니다.

답변

0

현재 공장에서로드 된 ApplicationContextInitializer 클래스를 필터링하는 방법이 없습니다. 테스트 레벨마다이를 수행하려면 다른 SpringBootTestContextBootstrapper을 사용하는 사용자 정의 주석을 사용해야합니다. 부트 스트 래퍼는 이니셜 라이저를 필터링 한 SpringBootContextLoader을 반환해야합니다. 문제가 발생하면 언제든지 SpringBootContextLoader에 보호 방법을 추가하여 무시할 수 있습니다.

+0

감사합니다. 필 필자는 몇 주 전에 문제를 열었지만 '질문'으로 표시되어 https://github.com/spring-projects/spring-boot/issues/11457을 닫았습니다. – eremic

+0

지금 2.0.0.RC2로 다시 열리고 목표 –