• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

update 쿼리 관련 질문

20.06.17 10:32 작성 조회수 165

0

우선 자바 문외한 인데 강사님 강의 스프링 부트 부터 시작해서 jpa 까지 들으면서 공부하고 있습니다.

좋은 강의로 자바에 입문하게 도와주셔서 감사합니다.

스프링 데이터 JPA : Update 쿼리 메소드 강좌 중의 테스트 코드를

@DataJpaTest 로 하면 insert -> update -> select 쿼리가 실행 되면서 title  이 jpa -> Spring 으로 바뀌는 것이 확인 됩니다.

그런데 @SpringBootTest 로 하면 insert -> select 쿼리만 실행 되고 update 쿼리는 실행 되지 않아 테스트는 실패합니다.

테스트 어노테이션이 바뀌니까 다른 결과가 나오는지 잘 이해가 되지 않습니다.

findAll 이 실행 되기 전에 dirthchecking(?)  을 하면서 데이터를 맞춰주니까 update 쿼리가 실행 되어야 맞는것 같은데요..무슨 차이일까요?

@Test
public void updateTest() throws Exception {

Post post = new Post();
post.setTitle("jpa");
Post newPost = postRepository.save(post);
newPost.setTitle("Spring");

List<Post> posts = postRepository.findAll();
assertThat(posts.size()).isEqualTo(1);
assertThat(posts.get(0).getTitle()).isEqualTo("Spring");

}

답변 1

답변을 작성해보세요.

0

더티체킹은 트랜잭션이 있어야 가능한데, @SpringBootTest는 @Transational이 없고 @DataJpaTest에는 있어서 그런 차이가 생깁니다.