JUnit5 생성자 주입 에러

DaePyeongSeo·2021년 5월 20일
0

Spring

목록 보기
3/8
post-thumbnail

JUnit5로 테스트코드를 작성하면서 생성자를 통해서 DI하는 것, lombok을 이용한 DI도 에러가 발생했다.


그런데 왜 lombok을 이용한 @Setter(onMethod_ = {@Autowired}) 수정자 주입방식이나 필드주입은 잘 되는걸까?


생성자주입을 시도한 경우 JUnit5의 Jupiter가 ParameterResolver를 못찾는 상황이 벌어지게 된다.

생성자 주입이나 lombok으로 @Allargsconstructor 같은 걸 사용하면 생성자에 적당한 매개변수를 DI해야하는 데 그때 파라미터를 찾아줄 적당한 ParameterResolver를 못찾게 된다.

스프링이라면 스프링 컨테이너가 알아서 컨텍스트영역에 등록된 스프링 빈을 찾아서 의존성주입했겠지만 JUnit이 제어하고있는 테스트코드 상황에서는 적당한 빈을 찾을 수 없게되기 때문이다.
그래서 스프링한테 도움을 요청하기위해 @Autowired를 사용하면 주입이 되는거 같다.

https://junit.org/junit5/docs/current/user-guide/#writing-tests-dependency-injection

Junit에는 세 종류의 ParameterResolver가 준비되어있으니 거기에 맞는 파라미터를 넣어주던지

1.TestInfoParameterResolver
2.RepetitionInfoParameterResolver
3.TestReporterParameterResolver

아니면 직접 사용자 ParameterResolver를 작성해서 적당한 파라미터를 찾게끔 해줘야할거 같다.

profile
https://pyeongdevlog.vercel.app

2개의 댓글

comment-user-thumbnail
2021년 10월 22일

junit5에서 생성자주입이 안되는 이유를 찾고 있었는데 글 잘 읽었습니다 감사합니다!

1개의 답글