김솔샤르
김솔샤르의 인사이트
김솔샤르
전체 방문자
79,458
오늘
0
어제
142
  • 분류 전체보기 (46)
    • IT (41)
      • 개발로그 (8)
      • 개발지식 (22)
      • 개발일기 (3)
      • 전산학 (3)
      • 기타 (4)
    • 칼럼 (3)
    • 생활정보 (2)

인기 글

  • Gradle Repository를 변경해보자
    2020.12.19
    Gradle Repository를 변경해보자
  • [자바스크립트] debugger 활용법
    2018.02.04
    [자바스크립트] debugger 활용법
  • [자바스크립트] arrow function⋯
    2018.08.13
    [자바스크립트] arrow function⋯
  • [자바스크립트] sort() 함수 활⋯
    2018.08.18
    [자바스크립트] sort() 함수 활⋯
  • Spring Data JPA의 saveAll()⋯
    2021.01.31
    Spring Data JPA의 saveAll()⋯

최근 댓글

  • 부족한 글 읽어주셔서 감사합니⋯
    김솔샤르
  • 좋은 글 잘 읽었습니다. 본문에⋯
    사이다
  • 저는 직접 Exception을 handlin⋯
    김솔샤르
  • 남의 인생에 도전을 강요할 수⋯
    김솔샤르
  • 혹시 예외처리는 어떻게 하셨나⋯
    devdev

최근 글

  • [개발일기] 저는 지극히 평범한⋯
    2022.05.08
  • Spring Data JPA @Query 사용시⋯
    2022.04.24
    Spring Data JPA @Query 사용시⋯
  • [개발일기] 재택 근무 2년 간의⋯
    2022.04.21
  • 쿼리에서 비즈니스 로직을 걷어⋯
    2022.04.17
  • [개발일기] 또 동료가 그만뒀다
    2022.04.03

태그

  • epl
  • 루니
  • JavaScript
  • 러시아월드컵
  • 자바스크립트
  • 월드컵
  • jpa
  • 축구
  • 맨유
  • 포그바

티스토리

블로그 메뉴

  • 홈
  • 태그
  • 방명록
hELLO · Designed By 정상우.
김솔샤르

김솔샤르의 인사이트

DataJpaTest를 활용한 테스트
IT/개발지식

DataJpaTest를 활용한 테스트

2019. 3. 2. 19:18

지난 포스팅에서는 Mockito를 활용하여 Service 객체가 적절하게 내부 객체를 호출하는지를 알아보는 테스트를 진행했었다. 그 과정에서 Mock 객체를 활용한 이유는 테스트의 주 관심 대상이 아닌 객체는 올바르게 동작한다는 가정을 하기 위해서였는데, 이제 해당 Mock 객체가 올바르게 동작했는지 테스트해보자.

 

마찬가지로 회의실 예약 예제를 활용해보자.

 

 

이번 테스트의 중점은 Spring Data JPA의 동작이다. 즉, 데이터가 실제로 올바르게 들어가고 나오는지를 보면 된다. 코드를 보자.

 

 

 

 

간단하다. testRetrieveRooms 메서드를 보면, 먼저 "A"라는 회의실을 생성해 roomRepository에 저장한다. 저장된 모든 회의실 중 첫번째 회의실을 꺼내온 다음, 회의실의 이름이 위에서 저장했던 "A"와 일치하는지를 확인한다.

 

 

테스트 함수를 실행해보면 깔끔하게 pass 된다. Mockito를 활용했던 지난 테스트와의 차이는, 가짜 객체인 Mock이 아닌 실제 Repository 객체를 활용했다는 것이다. DataJpaTest 애노테이션을 선언해주면 내부적으로 in-memory database를 생성하여 선언된 Entity 클래스들을 스캔한다. 따라서 위와 같이 실제 DB가 동작하는 모습을 확인할 수 있다.

 

또, 테스트를 마치고 직접 데이터를 롤백하거나 Transactional 애노테이션을 달아줄 필요는 없다. DataJpaTest가 내부적으로 Transactional 애노테이션을 포함하고 있기 때문에 롤백은 자동으로 수행된다.

 

 

참고

 

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html

 

 

반응형
저작자표시비영리변경금지

'IT > 개발지식' 카테고리의 다른 글

Git commit 이력을 깔끔하게 관리하는 2가지 방법  (0) 2021.01.31
JPA의 핵심 - 영속성 컨텍스트 훑어보기  (0) 2020.09.26
DataJpaTest를 활용한 테스트  (0) 2019.03.02
Mockito를 활용한 단위테스트  (0) 2018.11.14
[자바스크립트] 최대값과 최소값 찾기  (0) 2018.08.19
[자바스크립트] sort() 함수 활용하여 간단히 정렬하기  (0) 2018.08.18
DataJpaTest, jpa, JPA 테스트
김솔샤르
김솔샤르
기술 그리고 삶
댓글쓰기
다음 글
당신이 SI를 떠나야하는 이유
이전 글
누가 김민재의 중국행을 비난하는가
  • 이전
  • 1
  • ···
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • ···
  • 46
  • 다음

티스토리툴바