작성
·
69
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오): 네
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오): 네
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오): 네
[질문 내용]
생성자 주입을 선택해라! 강의 4:23-4:25부분을 보면
createOrder()을 테스트했을때 AppConfig의 orderService부분에서 에러가 발생한 걸로 나오는데요.
new OrderServiceImpl()로 인스턴스를 만들었으면
OrderServiceImpl class의 기본 생성자가 호출되면서 인스턴스가 만들어질거라고 생각했는데
왜 AppConfig의 orderService까지 호출됬는지 그 이유를 모르겠습니다.
답변 1
0
안녕하세요. Jin Baek님, 공식 서포터즈 y2gcoder입니다.
자바가 실행하기 전 컴파일하는 과정에서 에러가 발생했기 때문입니다. 위의 코드를 보시면 현재 OrderServiceImpl의 생성자를 매개변수가 하나도 없는 생성자로 변경했습니다.
그런데 AppConfig에서 에러가 나는 부분을 살펴보시면 매개변수가 있는 생성자로 OrderServiceImpl 인스턴스를 생성하려고 하고 있습니다. 하지만 현재 OrderServiceImpl 클래스를 가보면 해당 생성자는 주석 처리했기 때문에 존재하지 않습니다. 그래서 컴파일 단계에서 에러가 발생하고 있는 것입니다 🙂
감사합니다.
답변 감사합니다. 전 컴파일 범위가 테스트 하려는 파일과 그 파일에 임포트된 파일들까지인줄 알았는데 잘못 알고 있었네요! 궁금해서 compile 키워드로 질문답변 게시판에 검색해봤는데
y2gcode 서포터즈님의
"=> 말씀하신 것이 맞습니다. 정확하게 말씀 드리자면, 자바는 모든 소스 코드를 컴파일한 뒤 실행하기 때문에 프로젝트 내 다른 파일에서 컴파일 오류가 있으면 전체 컴파일이 실패합니다. 🙂 테스트 코드 역시 컴파일된 상태에서 실행되므로, 테스트와 직접적으로 관련 없는 파일이라도 오류가 있으면 테스트가 실행되지 않습니다.
"
라는 답변을 보고 덕분에 잘못 알고있었던것을 바로 잡을수 있었네요. 감사합니다!