[ERROR] @SpringBootTest Error creating bean with name 'springSecurityFilterChain' defined in class path resource

반응형

1. 문제

@SpringBootTest를 사용해 Integeration Test를 수행하려고 할때 Failed to load ApplicationContext 에러가 발생한다.

2. 원인

Test 수행 전 필요한 Bean을 load 하는 과정을 거치는데 이때 applcation.yml 을 제대로 찾지 못했다.

3. 해결

@SpringBootTest에 properties 변수를 사용해 ApplicationContext의 위치를 명시한다. 또한, MockMvcBuilders를 사용해 직접 context와 SpringSecurityFilterChain을 주입한다.

UserControllerTest

@RunWith(SpringRunner.class)
@SpringBootTest(properties = "spring.config.location=" +
        "classpath:/application.yml" +
        ",classpath:/application-oauth.yml" +
        ",classpath:/aws.yml"
)
@Transactional
public class UserControllerTest {

    @Autowired
    private WebApplicationContext context;

    @Autowired
    private UserRepository userRepository;

    private User user;

    private MockMvc mvc;

    @Before
    public void setup(){

        // mvc
        mvc = MockMvcBuilders
                .webAppContextSetup(context)
                .apply(springSecurity())
                .build();

        // save user
        user = userRepository.save(UserSetup.builder().build().get());
    }

추천서적

 

스프링 부트와 AWS로 혼자 구현하는 웹 서비스

COUPANG

www.coupang.com

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음


반응형

댓글

Designed by JB FACTORY