강의를 듣다보니 다음과 같은 설명이 나왔다.
@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만 사용이
가능하다.
'스프링' 카테고리의 다른 글
DTO와 엔티티간의 변환을 해 보자, MapStruct! (1) | 2023.04.05 |
---|---|
@Valid, ExceptionHandling을 어떻게 해 주어야 할까? (0) | 2023.03.24 |