과정을 즐기자

Error : org.junit.jupiter.api.extension.ParameterResolutionException: No ParameterResolver registered for parameter [hello.webpractice7.repository.MemberRepository arg0] in constructor [public hello.webpractice7.repository.MemberRepositoryTest(hello.web.. 본문

Error 정리

Error : org.junit.jupiter.api.extension.ParameterResolutionException: No ParameterResolver registered for parameter [hello.webpractice7.repository.MemberRepository arg0] in constructor [public hello.webpractice7.repository.MemberRepositoryTest(hello.web..

320Hwany 2022. 9. 27. 17:06

org.junit.jupiter.api.extension.ParameterResolutionException: No ParameterResolver registered for parameter [hello.webpractice7.repository.MemberRepository arg0] in constructor [public hello.webpractice7.repository.MemberRepositoryTest(hello.webpractice7.repository.MemberRepository)].

 

다음과 같은 에러가 나왔다. 

@RequiredArgsConstructor
@SpringBootTest
class MemberRepositoryTest {

    private final MemberRepository memberRepository;

    @Test
    public void save() {
        //given
        Member member = new Member("memberA");
        //when
        memberRepository.save(member);
        //then
        assertThat(member.getUserName()).isEqualTo("memberA");
    }
}

위와 같은 테스트에서 문제가 발생했는데 Junit5가 lombok 방식으로 의존성 주입을 하기 전에 먼저 하려고 하기 때문이다...

따라서 lombok의 @RequiredArgsConstructor을 이용하지 않고 

@SpringBootTest
class MemberRepositoryTest {

    @Autowired
    private MemberRepository memberRepository;

    @Test
    public void save() {
        //given
        Member member = new Member("memberA");
        //when
        memberRepository.save(member);
        //then
        assertThat(member.getUserName()).isEqualTo("memberA");
    }
}

다음과 같이 @Autowired로 주입해야 한다

 

단위 테스트에서는 @Autowired를 사용하자!!