ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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" 결론적으로 디렉토리 이름의 차이 때문에 경로가 달라져서 에러가 발생했습니다.

     

     

     


    결론

    허무하게도 디렉토리 이름의 차이 때문이었습니다. 사실 왜 테스트 디렉토리만 달라졌는지 이유는 모르겠지만, 찾았으니 다음부터는 실수하면 안 될 것 같습니다.

    반응형

    댓글

Designed by Tistory.