반응형
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());
}
추천서적
파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
반응형