Spring Test - @DataJpaTest

목차

@DataJpaTest

JPA 테스트를 진행하기 위해 사용하는 어노테이션, JPA component 들만 관리하기 때문에 JPA test 시 관련된 Configuration 들만이 적용된다.

  • 각 Test 를 진행할때마다 하나의 Transaction 에서 수행되고 Test 가 끝나면 Roll-back 을 진행한다.
    • @Transactional 기능이 필요하지 않으면 @Transactional(propagation = Propagation.NOT_SUPPORTED) 설정
  • Test 진행시 Embedded In Memory Database 로 진행한다.
  • @AutoConfigureTestDatabase 을 이용하면 Test 시 특정 Database 를 사용할 수 있다.

@DataJpaTest 를 이용한 Test 코드 작성

@DataJpaTest
class PostTest {

@Autowired
private PostRepository postRepository;

@Test
void createPostTest(){
String title = "title";
String subTitle = "subTitle";
String categoryName = "test";
String content = "content";

Category category = Category.builder()
.name(categoryName)
.build();

Post post = Post.builder()
.title(title)
.subTitle(subTitle)
.category(category)
.content(content)
.build();

Post savedPost = postRepository.save(post);
assertThat(savedPost.getTitle()).isEqualTo(title);
assertThat(savedPost.getSubTitle()).isEqualTo(subTitle);
assertThat(savedPost.getContent()).isEqualTo(content);
}
}
Share