카테고리 없음

테스트 코드 작성 방법

parkrams 2023. 4. 16. 11:31
728x90

테스트 순서

given 단계에서 Boards 객체를 생성하고, Boards 객체의 boardTitle과 boardContent 필드를 설정합니다. 또한, Users 객체를 생성하여 Boards 객체의 boardWriter 필드를 설정합니다. 그 후, BoardsRepository의 save() 메소드를 이용하여 Boards 객체를 데이터베이스에 저장합니다.

 

when 단계에서는 findByBoardWirterOrBoardTitle() 메소드를 호출하여 해당하는 Boards 객체를 조회합니다.

 

then 단계에서는 조회된 Boards 객체의 boardTitle 필드 값이 기대한 값과 일치하는지 검증합니다.

 

 

JpaRepository 미사용

interface repository 를 만들고 안에서 메서드 선언 후

class memoryReposity를 만들어서 메서드를 오버라이드 할 레포지토리를 만든다

test에 적용

package com.codehows.mobul.repository;

import com.codehows.mobul.entity.Boards;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.TestPropertySource;

import java.util.List;

import static org.assertj.core.api.Assertions.assertThat;


@SpringBootTest
@TestPropertySource(locations = "classpath:application-test.properties")
class BoardsRepositoryTest {


    MemoryBoardsRepository boardsRepository = new MemoryBoardsRepository();

    @AfterEach
    public void afterEach(){    // 콜백 메서드  테스트 하나 끝날 때 마다 콜백 메서드
        boardsRepository.clearStore();  // 테스트가 끝날 때마다 저장소를 지운다
    }

    @Test
    public void save(){

        for(int i=1; i<5; i++) {
            Boards boards = new Boards();
            boards.setBoardId(boards.getBoardId());

            boardsRepository.save(boards);

            Boards result = boardsRepository.findById(boards.getBoardId()).get();

//        System.out.println("result = " + (result == boards));
//        System.out.println(result);
//        Assertions.assertEquals(boards, result);  // boards = 기대 값 , result = 들어오는 값?
            assertThat(boards).isEqualTo(result);
            //import org.assertj.core.api.Assertions; 기억
            System.out.println("result = " + result);
            System.out.println("BoardsRepositoryTest.save");
        }
    }

    @Test
    public void findById(){
        Boards board1 = new Boards();
        board1.setBoardId(board1.getBoardId());
        boardsRepository.save(board1);

        Boards board2 = new Boards();
        board2.setBoardId(board2.getBoardId());
        boardsRepository.save(board2);
        System.out.println(board1 + " + "+ board2);

        Boards result = boardsRepository.findById(board2.getBoardId()).get();

        assertThat(result).isEqualTo(board2);


    }

    @Test
    public void findAll(){
        Boards boards1 = new Boards();
        boards1.setBoardId(boards1.getBoardId());
        boardsRepository.save(boards1);

        Boards boards2 = new Boards();
        boards2.setBoardId(boards2.getBoardId());
        boardsRepository.save(boards2);

        List<Boards> result = boardsRepository.findAll();  // findAll 의 타입은 List<> 타입

        Assertions.assertThat(result.size()).isEqualTo(2);  // 기대한 값은 2인데   입력 값이 3이라서 에러



    }



 /*       Boards boards = new Boards();
        boards.setBoardTitle("게시판 제목");
        boards.setBoardDate(LocalDateTime.now());
        boards.setBoardTag("게시판 태그");
        boards.setBoardId(1L);
        boards.setBoardContent();
        boards.setBoardLike();
        boards.setBoardView();*/



}
728x90