@DataJpaTest
@DataJpaTest 환경에서는 @Repository만 주입 대상이 된다.
@ActiveProfiles("test") // yml 파일에 on-profile : test 기반으로 작동
//@SpringBootTest
@DataJpaTest
class ProductRepositoryTest {
private final ProductRepositoryImpl productRepositoryImpl;
방법 1. @SpringBootTest
로 전환 (모든 빈 등록됨)
@SpringBootTest
로 전환 (모든 빈 등록됨)@SpringBootTest
@ActiveProfiles("test")
class ProductRepositoryTest {
@Autowired
private ProductRepository productRepository;
}
⚠️ 단점: 전체 애플리케이션 컨텍스트를 로딩하므로 테스트 속도가 느릴 수 있음
방법 2. 인터페이스 기반 주입으로 변경
@Autowired
private ProductRepository productRepository;
이렇게 하면 Spring이 ProductRepositoryImpl
을 자동으로 주입해줍니다.
단, 이 방식도 ProductRepositoryImpl
이 스프링 빈으로 등록되어 있어야 하고 @Import
없이는 @DataJpaTest
환경에서 불가능합니다.
@ActiveProfiles("test") // yml 파일에 on-profile : test 기반으로 작동
//@SpringBootTest
@DataJpaTest
@Import(ProductRepositoryImpl.class)
class ProductRepositoryTest {
@Autowired
private ProductRepository productRepository;
명시적으로 붙여줘서 해결하였다.
Last updated