강의를 듣다보니 다음과 같은 설명이 나왔다.

@SpringBootTest
@Transactional
class MemberJpaRepositoryTest {

    @Autowired MemberJpaRepository memberJpaRepository;

    @Test
    public void testMember(){
        Member member = new Member("memberA");
        Member savedMember = memberJpaRepository.save(member);

        Member findMember = memberJpaRepository.find(savedMember.getId());

        assertThat(findMember.getId()).isEqualTo(member.getId());
    }
}

평소같으면 그냥 @RequiredArgsConstructor로 의존성을 주입해주었을텐데, 이상하게도 @Autowired밖에 지원하지 않는다.

이유는 일반적인 코드에서는 스프링 컨테이너가 @Bean을 가져와 자동으로 주입을 해 주지만,

테스트같은 경우에는 JUnit5 Test Container라는 별도의 컨테이너가 사용된다. 그래서 DI의 타입이 정해져 있어서 @Autowired만 사용이

가능하다.

+ Recent posts