Backend/SpringBoot

[SpringBoot] JUnit을 사용해 테스트 코드를 작성해보자

seoraroong 2024. 8. 22. 18:58

JUnit을 이용한 테스트 코드 작성

  • JUnit 생명 주기 (Life Cycle) 코드 작성을 통한 어노테이션 동작 확인
    • @Test : 테스트 코드를 포함한 메서드 정의
    • @BeforeAll : 테스트를 시작하기 전에 호출되는 메서드 정의
    • @BeforeEach : 각 테스트 메서드가 실행되기 전 동작하는 메서드 정의
    • @AfterAll : 테스트를 종료하면서 호출되는 메서드 정의
    • @AfterEach : 각 테스트 메서드가 종료되면서 호출되는 메서드 정의

 

Spring Data JPA 활용하기

JPQL

JPA Query Language, JPA에서 사용할 수 있는 쿼리를 말한다.

 

- JPQL 쿼리의 기본 구조

SELECT p FROM Product p WHERE p.number = ?1;

Product : 엔티티 타입

p.number : 엔티티 속성

 

쿼리 메서드

동작을 결정하는 주제(Subject)와 서술어(Predicate)로 구분한다.

→ 주제 키워드로 쿼리의 주제 결정, 서술어에서 검색 및 정렬 조건 지정

 

쿼리 메서드의 주제 키워드

  • 조회 기능 수행
    • find .. By
    • read .. By
    • get .. By
    • query .. By
    • search .. By
    • stream .. By
  • 특정 데이터 존재 여부 확인
    • exists .. By
  • 조회 쿼리 수행 후 결과 레코드 수 리턴
    • count .. By
  • 삭제 쿼리 수행
    • delete .. By
    • remove .. By
  • 쿼리를 통해 조회된 결과 개수 제한
    • .. First<number> ..
    • .. Top<number> ..

 

 

1. 테이블에 데이터를 삽입하는 테스트 케이스

 

- 기존 프로젝트에 테스트 코드 작성

 

- 작성한 테스트 코드 실행 후 터미널 출력 결과

 

- HeidiSQL에서 product 테이블 조회 후 입력된 데이터 확인하기

 

 

 

 

2. @Query Annotation 사용해 JPQL 작성하기

→ 메서드 이름만으로 쿼리 메서드를 실행할 수도 있으나, @Query 어노테이션을 사용해 직접 JPQL을 작성할 수 있다

@Query("SELECT p FROM Product AS p WHERE p.name = ?1")
List<Product> findByName(String name);

→ ?1 : 파라미터를 전달 받기 위한 인자, 1은 첫 번째 파라미터를 의미