spring boot 공부 - 2 - CRUD 테스트

문문·2023년 5월 7일
0

CRUD 테스트 하기

MyBatis와는 달리 JPA는 쿼리문을 작성하지 않아도 됩니다.

JUnit 테스트를 통해 CRUD를 해볼게요.
Board.java에서 소스에 커서를 위치하고 command + shift + T를 눌러서 생성해 줍니다.

package com.hhii.board.entity;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.*;

@SpringBootTest // 스프링 부트에서 제공하는 테스트 어노테이션
class BoardTest {
    @Autowired
    BoardRepository boardRepository; // 스프링 컨테이너에 등록 된 BoardRepository 객체(Bean)를 주입 받음

    @Test
    void test_save() {
        Board params = Board.builder()
                .title("1번 타이틀")
                .content("1번 컨텐츠")
                .writer("1번 작성자")
                .hits(1)
                .deleteYn('N')
                .build();
        boardRepository.save(params);
        /*
            save는 Builder 패턴을 통해 생성된 객체. Board(엔티티 클래스에 @Builder 어노테이션 선언되어 있음)
            생성자와 달리 빌더 패턴을 이용하면 어떤 맴버에게 어떤 값을 셋팅하는지 직관적으로 확인 가능.
            생성자를 통해 객체를 생성한다면
        Board entity = new Board("1번 타이틀", "1번 컨텐츠", "1번 작성자", 1, 'N'); 으로 인자 순서대로 작성해야함.
            빌더패턴은 인자 순서 관계없이 객체 생성
        */
        Board entity = boardRepository.findById((long) 4).get();
        assertThat(entity.getTitle()).isEqualTo("1번 타이틀");
        assertThat(entity.getContent()).isEqualTo("1번 컨텐츠");
        assertThat(entity.getWriter()).isEqualTo("1번 작성자");
    }

    @Test
    void test_findAll() {
        //전체 게시물 수 조회
        long boardCount = boardRepository.count();
        //전체 게시글 리스트 조회
        List<Board> boards = boardRepository.findAll();
        System.out.println("전체 게시물 수 조회" +boardCount);
        System.out.print("전체 게시글 리스트 조회" + boards);
    }

    @Test
    void test_delete() {
        Board entity = boardRepository.findById((long) 1).get(); //findById 매서드를 통해 엔티티를 조회
        boardRepository.delete(entity); //조회한 엔티티를 삭제
    }
}

실제로 CRUD를 테스트 하는 과정에서 잘 되는지 쿼리 조회를 통해 확인을 해주세요.
select * from board;

0개의 댓글