2017-01-25 2 views
4

스프링 부트 1.4.3.RELEASE를 사용 중이며 테스트를 실행할 때 일부 구성 요소가 검사에서 제외됩니다. 필터에도 불구하고스프링 부트 테스트 컨텍스트에서 스프링 ComponentScan excludeFilters 주석이 작동하지 않습니다.

@RunWith(SpringRunner.class) 
@SpringBootTest 
@ComponentScan(
     basePackages = {"com.foobar"}, 
     excludeFilters = @Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {AmazonKinesisRecordChecker.class, MyAmazonCredentials.class})) 
public class ApplicationTests { 

    @Test 
    public void contextLoads() { 
    } 

} 

내가 원하지 않는 구성 요소가로드 테스트를 실행하고 그 클래스가 제대로 작동하기 위해 AWS 환경을 필요로 봄 부팅이 충돌 할 때 :

2017-01-25 16:02:49.234 ERROR 10514 --- [   main] o.s.boot.SpringApplication    : Application startup failed 

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'amazonKinesisRecordChecker' defined in file 

질문 :는 어떻게 할 수 필터를 작동하게 만드시겠습니까?

+0

@SpringBootTest (classes = <<로드 할 클래스 선택 >>). 문서 : http://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/test/context/SpringBootTest.html – Barath

+0

@Barath 클래스를 포함 할 수있는 유일한 방법이 있다는 말인가, 스프링 부트 테스트시 제외시키지 않으시겠습니까? – Javide

+0

아니요, 그렇습니다. WebMvcTest를 사용하여 필터를 제외 할 수 있습니다. Doc : http : //docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/test/autoconfigure/web/servlet /WebMvcTest.html – Barath

답변

2

@MockBean을 사용하여 제외시키지 말고 조롱하십시오.

@RunWith(SpringRunner.class) 
@SpringBootTest 
public class ApplicationTests { 
    @MockBean 
    AmazonCredentials amazonCredentials; 

    @Test 
    public void contextLoads() { 
    } 
} 

아래 당신이 드릴 것입니다이 방법을 같이 Spring 컨텍스트를 사용하면 AmazonCredentials 빈을 조롱하려는 것을 알고있다. 경우에 따라 필터를 제외하는 것이 다소 까다 롭습니다.

희망이 도움이됩니다. 우리가 이것을 끝내기위한 또 다른 방법이 있다면 탐구하고 싶습니다.

관련 문제