-
SpringBoot 테스트 중 Bean을 찾을 수 없을 때Spring Framework 2021. 7. 25. 00:47반응형
에러 내용
스프링부트 테스트 도중 Repository 객체를 @Autowired로 빈 주입을 시도했습니다. 하지만 계속해서 테스트 실패와 함께, 빈을 찾을 수 없다는 에러가 발생했습니다. 그리고 결과적으로 Repository 부분에서 NPE가 발생합니다.
시도
1. @Repository 유무
스프링부트에서 @Component로 편리하게 빈 주입을 할 수 있습니다. @SpringBootAplication이 자동으로 이들을 스캔 후 모든 빈들이 생겨나기 전에 가장 먼저 빈으로 등록해 줍니다. 그리고 @Repository, @Service, @Controller는 좀 더 명확한 layer 구분을 위해서 @Component를 상속받고 있습니다.
하지만 @Repository는 잘 달려있습니다.. 문제가 뭘까요?
2. @SpringBootTest
@SpringBootTest는 스프링 통합 테스트를 가능하게 해줍니다. 자동으로 @SpringBootApplication을 찾아 빈들을 등록해줍니다. 그래서 쉽게 빈들을 등록하고, MockBean도 활용할 수 있습니다.
모든 빈을 다 올려두고 테스트를 시작하는 환경이지만, 그래도 NPE가 발생합니다.
3. Spring test 디렉토리
main의 경로는 이렇습니다. "main-java-example-springboot" 그리고 아래에 @SpringBootApplication이 있습니다. 테스트를 진행할 때는 @SpringBootAplication의 클래스와 같은 경로에 존재해야 합니다.
하지만 테스트 클래스의 경로는 이렇습니다. "main-java-example-springboot-board" 결론적으로 디렉토리 이름의 차이 때문에 경로가 달라져서 에러가 발생했습니다.
결론
허무하게도 디렉토리 이름의 차이 때문이었습니다. 사실 왜 테스트 디렉토리만 달라졌는지 이유는 모르겠지만, 찾았으니 다음부터는 실수하면 안 될 것 같습니다.
반응형'Spring Framework' 카테고리의 다른 글
JPA N+1 문제를 해결해보자 (0) 2021.08.20 [JPA, Redis]페이지별 결과 캐싱 (0) 2021.08.11 Redis, SpringBoot 연동하기 (0) 2021.07.16 Entity, DTO 그리고 @Service (0) 2021.07.13 앵귤러, 스프링부트를 이용한 Oauth2 회원가입 문제 (0) 2021.06.23