Junit - @Autowired 필수 ?

Codren·2021년 10월 8일
1

Junit 에서의 DI

  • Junit 을 이용해서 테스트를 진행할 때 @Autowired 어노테이션이 아닌 lombok 의 @RequiredArgsConstructor 어노테이션으로 DI 설정 시에 발생하는 에러에 대한 궁금증




@Autowired

  • 다음과 같이 테스트 클래스 내에서 @Autowired 어노테이션을 지정하여 DI 를 수행하면 정상적으로 테스트가 수행됨




@RequiredArgsConstructor

  • lombok 의 @RequiredArgsConstructor 어노테이션 방식으로 final 타입의 멤버변수를 DI 지정하고 테스트를 수행하면 에러가 발생함




원인

  • Junit5 로 테스트를 수행하게되면 생성자 매개변수 관리는 스프링 컨테이너가 아닌 테스트 프레임워크인 Junit5 가 스스로 지원하게되고, DI를 지원하는 타입이 지정되어 있음
  • lombok 방식으로 DI 를 지정하더라도 Junit 이 먼저개입하게 되어 에러가 발생됨




결론

  • Junit 기반으로 테스트를 수행할 때 DI 는 lombok 및 생성자 DI 가 아닌 @Autowired 어노테이션으로 지정하자

1개의 댓글

comment-user-thumbnail
2022년 9월 11일

제가 정말 궁금했던 건데 잘 읽고 갑니다!

답글 달기