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

김헌우님의 프로필 이미지
김헌우

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

컴포넌트 스캔과 자동 의존관계 설정

4분에 실행시 MemberserviceTest에서 오류가 나요

작성

·

58

0

스크린샷(46).png

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예

[질문 내용]
사진과 같은 오류가 나서 실행이 안 되는데, 어떻게 고쳐야 하나요?

답변 2

0

안녕하세요. 김헌우님, 공식 서포터즈 코즈위버입니다.

MemberService 클래스에 기본생성자(파라미터가 없는 생성자)가 추가 되어 있는지 확인해주시기 바랍니다.

스프링 빈은 반드시 기본생성자로 객체를 생성할 수 있어야 합니다. 오류 메시지를 보니 이 부분에서 문제가 있는것 같습니다.

 

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. 김헌우님.

제공해주신 오류 상황을 보니, MemberServiceTest에서 MemberService 클래스의 생성자가 MemberRepository 타입의 객체를 필요로 하는데 해당 객체가 제공되지 않아 발생하는 문제로 보입니다. 이러한 문제를 해결하기 위해서는 테스트 코드에서 MemberRepository를 올바르게 주입해 주어야 합니다.

다음 두 가지 방법 중 하나를 선택하여 문제를 해결할 수 있습니다:

  1. Mocking을 이용한 해결:
    Mockito와 같은 Mocking 라이브러리를 활용하여 MemberRepository의 Mock 객체를 생성하고 MemberService의 생성자에 주입합니다.

    @ExtendWith(MockitoExtension.class)
    public class MemberServiceTest {
    
    
       @Mock
       private MemberRepository memberRepository;
    
    
       @InjectMocks
       private MemberService memberService;
    
    
       // your test methods
    }
    
  2. 직접 인스턴스 생성하여 주입:
    MemberRepository를 수동으로 생성하여 MemberService의 생성자에 전달할 수도 있습니다(단, 이 경우 실제 데이터베이스와의 의존성을 최대한 제거하고 테스트 환경에서의 데이터를 사용해야 합니다).

    public class MemberServiceTest {
    
    
       private MemberService memberService;
       private MemberRepository memberRepository;
    
    
       @BeforeEach
       public void setUp() {
           memberRepository = new MemoryMemberRepository(); // 또는 H2 같은 인메모리 DB의 구현체
           memberService = new MemberService(memberRepository);
       }
    
    
       // your test methods
    }
    

위의 방법 중 하나를 사용하여 MemberRepository 객체가 MemberService에 올바르게 주입되도록 하면 문제가 해결될 것입니다.

더 많은 정보와 예제를 보고 싶다면 아래의 링크를 참고하시기 바랍니다:

이 외에도 유사한 문제가 또 있다면 질문을 남겨주세요. 곧 지식공유자께서 더 구체적인 답변을 제공해 주실 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

김헌우님의 프로필 이미지
김헌우

작성한 질문수

질문하기