본문 바로가기
Framework/Spring Boot

Parameter 0 of constructor in controller required a bean of type service that could not be found.

by tpleehan 2023. 5. 1.

Parameter 0 of constructor in controller required a bean of type service that could not be found.

Controller에서 Test를 진행하는 도중 사진과 같은 에러가 발생했다.

해당 Controller에 생성자의 매개변수를 찾을 수 없다고 나오면서 Service의 Bean이 필요하다는 에러 문구인데

Controller와 Service에 어노테이션을 등록을 했는데 왜 에러가 발생하는지 발견하지 못 했다.

 

분명 테스트가 성공된 것을 눈으로 직접 확인했던 것을 기억하고 있었고,

테스트 부분 말고 서버를 띄어서 직접 url을 실행해보니 정상적으로 실행이 되었다.

테스트는 계속 실패하기 때문에 전반적으로 에러난 부분에 대해 조금 자세하게 살펴보았는데

No qualifying bean of type 'service' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}

service에 bean이 없다는 에러만 발생해서 controller와 service 클래스가 아닌 Test 클래스에서 해당 에러를 해결해야 했다.

Controller Test 클래스에서 Autowired와 MockBean 어노테이션을 지정한 것을 확인할 수 있는데
Service에 대한 의존성을 주입하지 않아서 해당 에러가 발생한 것을 확인할 수 있었다.

 

테스트가 성공한 이후에 Service 부분을 호출하지 않아서 지웠던게 화근이었고,

Service를 추가하고 테스트를 실행해보니 성공할 수 있었다.

@MockBean
private MemberService memberService;

 

이번 에러에 대해 많이 미흡하다고 생각이 들게 되었고,

정상적으로 테스트가 성공했지만 아주 미세한 부분이라 생각하는 코드를 수정하더라도

다시 한번 테스트를 실행해보고 검증해보는 습관을 가지도록 생각하게 되었다.

댓글