-
Notifications
You must be signed in to change notification settings - Fork 1
DataSource PostreSQL QueryDSL Repository 테스트 작성 가이드
LEE YOUNG WOO edited this page Dec 7, 2022
·
1 revision
아래 문서의 내용을 베이스로 하여 추가적인 내용에 대해 기술합니다. 먼저 아래 문서를 살펴보기를 권장합니다.
@DataJpaTest(includeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Repository.class))
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@ActiveProfiles("tc")
@Testcontainers
@ExtendWith(DataSourcePostgresTestSupportExtension.class)
@ContextConfiguration(classes = {
JpaConfiguration.class,
QueryDslConfiguration.class,
UserQueryDslRepository.class,
UserRepository.class
})
@EnableAutoConfiguration
class UserQueryDslRepositoryTest {
@Autowired
private UserQueryDslRepository userQueryDslRepository;
@Autowired
private UserRepository userRepository;
@DisplayName("유저 목록 조회 - contains '길' 3건 조회")
@Test
void getUserListBySearchingName() {
//given
User user1 = User.builder()
.userId("user1")
.name("홍길동")
.password("1234")
.build();
userRepository.save(user1);
User user2 = User.builder()
.userId("user2")
.name("스티브")
.password("1234")
.build();
userRepository.save(user2);
User user3 = User.builder()
.userId("user3")
.name("박길동")
.password("1234")
.build();
userRepository.save(user3);
User user4 = User.builder()
.userId("user4")
.name("문무길")
.password("1234")
.build();
userRepository.save(user4);
//when
List<User> userList = userQueryDslRepository.getUserListBySearchingName("길");
//then
assertThat(userList.size()).isEqualTo(3);
assertThat(userList.contains(user1)).isTrue();
assertThat(userList.contains(user3)).isTrue();
assertThat(userList.contains(user4)).isTrue();
}
}
@DataJpaTest(includeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Repository.class))
profile을 ‘tc’ 로 지정하여 테스트를 수행합니다.
이 어노테이션이 지정되면 testcontainers
구성요소가 초기화 됩니다.
테스트를 수행하는데 필요한 처리를 담당하는 extension 클래스인 DataSourcePostgresTestSupportExtension 을 적용합니다. 테스트 케이스를 수행할 때마다 실행해야 하는 코드의 자동화를 담당합니다.
@ContextConfiguration(classes = {JpaConfiguration.class, QueryDslConfiguration.class, ‘테스트대상Repository’.class})
프로젝트 구성에 맞추어 JpaConfiguration
, QueryDslConfiguration
클래스 (src/main/java 내의 @Configuration 클래스) 와 테스트 대상이 되는 Repository 구현 클래스를 지정해야 합니다. 위의 예제 코드에서는 UserQueryDslRepository
를 테스트 하는 경우에 대한 코드 입니다.
@ContextConfiguration
에서 지정한 클래스들에 대한 구성을 자동화합니다.