2017-12-02 2 views
2

스프링 부트 애플리케이션에서 단일 서비스의 통합 테스트를 수행하고 싶습니다. 그래서 나는이 서비스 만 갖고 싶고 테스트 애플리케이션 컨텍스트에 추가 할 의존성을 가지고 있습니다.컨텍스트 config에 하나의 @Component 클래스를 지정하여 종속성을 자동으로 해결할 수 있습니까?

가정한다 I은 (는 AB에 대한 참조를 갖는다)과 다른 패키지 AB에서 두 클래스를 @Component 주석으로 표시. 응용 프로그램을 실행할 때 @SpringBootApplication은 모든 빈을 찾고 내재적 인 @ComponentScan으로 컨텍스트에 추가합니다.

내 테스트 구성에서 하나의 클래스 A 만 지정하고 Spring Boot를 사용하여 종속성 (B)을 해결하고 컨텍스트에 추가하십시오.

스프링 부트 2 또는 가장 적합한 옵션으로 필요한 클래스를 명시 적으로 선언하여 별도의 @Configuration을 만들 수 있습니까? 나는 단지 하나의 클래스 A를 지정하고 봄 부팅이 종속성 (B)의 해결하고 문맥에 추가하고 싶은 내 테스트 구성에서

+1

문제는 의존성 삽입 지점이 'A'가 반드시 'B'의 구현이 무엇인지 알지 못하기 때문에 Spring이 '@ Component' beans를 일시적으로 가져올 방법이 없다는 것입니다. 저는 항상 별도의 테스트 @Configuration 클래스를 사용합니다 (그리고 생성자 주입을 사용하면 Spring의 필요성을 완전히 없앨 수 있습니다). – chrylis

답변

2

(실제로 내가 부탁하고 그 이유는,이보다 더있다) .

아니요. 스프링이 종속성 및/또는 어떤 구체적인 유형을 실제로 원하는지 알 수 없으므로 불행히도 불가능합니다.

스프링 부트 2 또는 가장 적합한 옵션은 명시 적으로 선언 된 필수 클래스를 사용하여 별도의 @Configuration을 만들 수 있습니까?

예, 전용 테스트 @Configuration 클래스를 그 목적으로 만 선언 할 수 있습니다. 그러나 컨텍스트 캐싱 지원의 이점을 얻으려면 구성 클래스 집합을 테스트 클래스에 재사용하는 것이 더 유용 할 수 있습니다.

+0

Postrgres에 대한 TestContainers 및 컨텍스트 캐싱을위한 일반적인 구성으로 @Conditional 및 프로필과 함께 일부 빈을 비활성화했습니다. 감사합니다. :) – Derp

관련 문제