관리 메뉴

bright jazz music

[bootBoard] N:1(다대일) 연관관계: 5. 연관 관계 추가 본문

Framework/Spring

[bootBoard] N:1(다대일) 연관관계: 5. 연관 관계 추가

bright jazz music 2022. 9. 18. 22:13

연관관계 테스트

 

현재 3개의 테이블이 PK와 FK의 관계로 이루어져 있다. 따라서 테스트를 위한 데이터를 추가하는 작업도 PK 쪽에서부터 시작하는 것이 좋다.

  • 테스트를 위해 프로젝트 내 test 폴더에 repository 폴더를 생성한다.
  • 그 안에 각 엔티티 클래스를 다루는 아래의 클래스를 생성한다.
  • MemberRepositoryTests, BoardRepositoryTests, ReplyRepositoryTests

 

 

test ->bootboard->repository-> 테스트 클래스 생성

 

 

 

테스트 데이터 추가하기

 

MemberRepositoryTests.java

MemberRepository를 주입하고 예제로 사용할 Member객체를 100개 추가한다.

 

package com.example.bootboard.repository;

import com.example.bootboard.entity.Member;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.stream.IntStream;

@SpringBootTest
public class MemberRepositoryTests {
    @Autowired
    private MemberRepository memberRepository;

    @Test
    public void insertMembers(){
        IntStream.rangeClosed(1, 100).forEach(i -> {
            Member member = Member.builder()
                    .email("user" + i +  "@aaa.com")
                    .password("11111")
                    .name("USER" + i)
                    .build();

            memberRepository.save(member);
        });
    }

}

 

테스트 코드 실행

 

테스트 데이터 입력 완료

 

 

 

BoardRepositoryTests.java

BoardRepositoryTests 코드 역시 동일한 패키지에 추가한다.

앞에서 만들어진 member테이블을 이용해서 Board객체를 생성해서 추가하는 테스트 코드를 작성한다.

 

package com.example.bootboard.repository;

import com.example.bootboard.entity.Board;
import com.example.bootboard.entity.Member;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.stream.IntStream;

@SpringBootTest
public class BoardRepositoryTests {

    @Autowired
    private BoardRepository boardRepository;

    @Test
    public void insertBoard(){
        IntStream.rangeClosed(1, 100).forEach(i -> {
            Member member = Member.builder().email("user" + i + "@aaa.com").build();

            Board board = Board.builder()
                    .title("Title..." + i)
                    .content("Content..." + i)
                    .writer(member)
                    .build();
            boardRepository.save(board);
        });
    }
}



/*
* testInsert()는 한 명의 사용자가 하나의 게시물을 등록하도록 작성되었다. 
* */

테스트 코드 실행

콘솔

 

board테이블에 레코드 생성

 

 

 

ReplyRepositoryTests.java

댓글은 ReplyRepositoryTests 클래스를 작성해서 특정한 임의의 게시글을 대상으로 댓글을 추가한다.

현재 게시글은 1번~100번까지의 임의 번호를 사용해서 300개의 댓글을 추가한다.

 

package com.example.bootboard.repository;

import com.example.bootboard.entity.Board;
import com.example.bootboard.entity.Reply;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.stream.IntStream;

@SpringBootTest
public class ReplyRepositoryTests {
    @Autowired
    private ReplyRepository replyRepository;

    @Test
    public void insertReply() {

        IntStream.rangeClosed(1, 300).forEach(i -> {
            //1~100까지의 임의 번호
            long bno = (long)(Math.random() * 100) + 1;

            Board board = Board.builder().bno(bno).build();

            Reply reply = Reply.builder()
                    .text("Reply......" + i)
                    .board(board)
                    .replyer("guest")
                    .build();

            replyRepository.save(reply);
        });
    }


}

 

 

 

 

 

Comments