인프런 커뮤니티 질문&답변

비가싫어요님의 프로필 이미지
비가싫어요

작성한 질문수

스프링 DB 2편 - 데이터 접근 활용 기술

예외와 트랜잭션 커밋, 롤백 - 활용

Junit Test DI 방식 질문드립니다.

해결된 질문

작성

·

951

3

강의에서 보시면 영한님께서 OrderService와 OrderRepository를 주입 받을 때 @Autowired를 사용하시는데요.

이걸 @RequiredArgsConstructor를 사용하여 생성자 주입응로 하면 에러가 터지더라구요. org.junit.jupiter.api.extension.ParameterResolutionException

Test 환경에서는 @Autowired로 주입을 받아야 하는것인가요?

답변 1

2

안녕하세요. JUNN님, 공식 서포터즈 OMG입니다.
.

테스트에서는 롬복을 사용하려면 별도의 build.gradle에 추가 작업을 해줘야합니다.

아래 링크를 참고해주세요

https://otrodevym.tistory.com/entry/Lombok-gradlespring%EC%97%90%EC%84%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95
.
감사합니다.

추가가 되어있는데도 오류가 났었네요 ㅠ

자료들을 찾아보니 junit4~5(이전버전=비교적 초반 5버전)에서는 테스트에서 생성자 주입이 되지 않았다고 하네요.

junit5(비교적 최신)에서 @TestConstuctor가 도입되어 가능하게 변경되었다고 하는데 이 부분은 직접 확인해보시면 좋을 것 같아요. 확인 후 결과를 공유해주시면 다른 수강생 분들에게도 많은 도움이 될 것 같습니다.

https://sunghs.tistory.com/138

보내주신 링크 참고하여 @TestConstructor(autowireMode = TestConstructor.AutowireMode.ALL) 어노테이션을 추가하고 @RequiredArgsConstructor 와 private final 방식으로 생성자 주입을 했더니 정상적으로 테스트가 실행되었습니다!

감사합니다!

비가싫어요님의 프로필 이미지
비가싫어요

작성한 질문수

질문하기