딱콩이의 봄

레포지토리 설계 / 테스트 코드 작성 본문

봄과 함께하는 프로젝트/작고 소듕한 프로젝트

레포지토리 설계 / 테스트 코드 작성

코린이딱콩 2022. 12. 8. 22:47

안녕하세요!

저번 게시글에 이어서 오늘은 레포지토리 설계로 시작해볼게요.

 

Repository 패키지 생성 후 ItemRepository 인터페이스를 생성해줍니다.

itemRepositroy 생성

JpaRepository를 상속받는 ItemRepository를 작성해줍니다. 

JpaRepository는 두개의 제네릭 타입을 사용하는데, 첫 번째에는 엔티티 타입 클래스를 넣어주고, 두번째는 기본키 타입을 넣어줍니다.

Item 클래스의 기본키 타입은 Long 이므로 Long을 넣어줍니다.

itemRepository interface

JpaRepository는 기본적인 CRUD 및 페이징 처리를 위한 메소드가 정의되어 있다고 합니다. 엔티티를 저장하거나, 삭제, 또는 엔티티의 개수 출력 등의 메소드를 볼 수 있다고 해요. 이번에 작성할 테스트 코드는 엔티티를 저장하는 save() 메소드입니다.

 

💡JpaRepository에서 지원하는 메소드

메소드 기능
<S extends T> save(S entity) 엔티티 저장 및 수정
void delete(T entity) 엔티티 삭제
count() 엔티티 총 개수 반환
Iterable<T> findAll() 모든 엔티티 조회

 

테스트 환경의 경우 h2 데이터 베이스를 사용하려고 합니다. resource 아래에 application-test.properties 파일을 생성해주세요! 

테스트 환경을 위한 별도의 properties를 만드는거에요.

test.properties 설정

테스트 코드를 작성해볼게요!

맥인 경우 cmd + shift + T 하시면 파일 생성이 됩니다! 윈도우는 ctrl + shift + T 하시면 돼요.

테스트 파일 생성

짠 이렇게 테스트 파일을 생성해줍니다.

테스트 코드 작성

  • @TestProterySource : 테스트 코드 실행시 application.properties에 설정해둔 값보다 test.properties에 같은 설정이 있다면, 더 높은 우선순위를 부여해 줍니다.
  • @Autowired : ItemRepository를 사용하기 위해 어노테이션을 사용하여 bean을 주입합니다.
  • @Test : 테스트할 메소드 위에 선언해주고, 해당 메소드를 테스트 대상으로 지정해줍니다.
  • @DisplayName : 지정한 테스트명이 노출됩니다.(Junit5에 추가된 어노테이션!)

테스트 코드를 실행시켜주면 ~

테스트 코드 실행 쿼리문

다음에는 조회기능으로 돌아올게요!👐

 

Comments