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

11 1님의 프로필 이미지
11 1

작성한 질문수

스프링 핵심 원리 - 기본편

생성자 주입을 선택해라!

프레임워크 없이 순수한 자바 코드를 단위 테스트 하는 경우

해결된 질문

작성

·

396

1

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]

학습 자료의 생성자 주입을 선택하라는 내용에서 '누락' 설명하는 부분에 써진 내용을 보고 질문 드립니다. 아래는 학습 자료에 있는 내용 복붙한 거입니다.


프레임워크 없이 순수한 자바 코드를 단위 테스트 하는 경우에 다음과 같이 수정자 의존 관계인 경우

@Autowired가 프레임워크 안에서 동작할 때는 의존 관계가 없으면 오류가 발생하지만, 지금은 프레임워크 없이 순수한 자바 코드로만 단위 테스트를 수행하고 있다. 이렇게 테스트를 수행하면 실행은 된다.

그런데 막상 실행 결과는 NPE(Null Point Exception)이 발생하는데, memberRepository, discountPolicy 모두 의존 관계 주입이 누락되었기 때문이다


 

여기서 말하고자 하는 바는

"프레임워크 없이 순수한 자바 코드를 단위 테스트 하는 경우엔 수정자 주입 방법의 경우 문제가 생긴다."가 아니라

"수정자 주입을 하면 만일 개발자의 실수로 뭔가를 누락할 경우 발견하기 어려울 수 있다. 그러므로 수정자 주입을 안 하는 게 좋다."

라는 게 맞나요? 즉 수정자 주입으로 해도 테스트할 수는 있지만 여러모로를 따졌을 때 생성자 주입이 실수할 확률이 적어서 낫기 때문인지 궁금합니다.

 

단위 테스트할 때 set 메서드를 직접 호출하면 수정자 주입의 경우에도 자바로 단위 테스트 할 수는 있는 거죠? 제가 코드를 짰을 땐 되는 것 같은데 제가 제대로 코드를 짠 게 아닐 수 있어서 검증이 제대로 된 건지 모르겠어서 질문드립니다.

 

 

답변 1

1

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

네, 질문 내용으로 보았을 때 잘 이해하신 것 같습니다.

생성자라는게 결국 객체 인스턴스를 생성하기 위한 필수조건이기 때문에 의존관계 주입의 누락을 막을 수 있습니다.(강의 5분 50초의 상황)

 

그리고 강의 5분 50초 이후의 생성자로 순수한 자바로 테스트 하는 코드를

수정자를 호출하는 코드를 작성한다면 생성자 대신 수정자로 테스트하는 코드가 되니 이 부분에 대한 궁금증도 해결 되셨으리라 생각합니다.

 

감사합니다.

11 1님의 프로필 이미지
11 1
질문자

감사합니다

11 1님의 프로필 이미지
11 1

작성한 질문수

질문하기