본문 바로가기
프로젝트/게시판

[SpringBoot] 게시판 3. 게시글 입력 테스트 코드 작성

by qkzkdo 2023. 8. 1.
728x90

게시글 조회 테스트를 위해 게시글 100개를 입력할 테스트 코드를 작성

1. 데이터를 전송하고 조회하기 위한 DTO 생성

@Setter
@Getter
public class BoardDTO {

    private long no;
    private String title;
    private String content;
    private int readCount;
    private LocalDateTime createDate;
    private LocalDateTime updateDate;

}

 

DTO란? "Data Transfer Object"의 약자로, 데이터 전송 객체를 의미

  • Board 객체의 필드를 가지고 있는 BoardDTO라는 클래스를 생성하여 데이터를 담아 전달할 수 있다. 이러한 방식으로 데이터 전송에 사용되는 것이 DTO

 

 

2. BoardMapper 인터페이스 생성

@Mapper
public interface BoardMapper {

    void boardSave(BoardDTO dto);

}

Mapper란?  MyBatis 프레임워크와 연동하여 데이터베이스의 쿼리(SQL)를 실행하는 역할을 수행하는 인터페이스

  • Mapper 인터페이스는 XML 파일 또는 어노테이션을 통해 SQL 쿼리를 매핑하고, Mapper 인터페이스의 메서드를 호출하면 MyBatis가 해당 메서드와 매핑된 SQL 쿼리를 실행한다.

 

 

3. board-mapper.xml 생성

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.moo.project.config.mapper.BoardMapper">

    <insert id="boardSave">
        insert into board(title, content) values(#{title}, #{content});
    </insert>
	
</mapper>

 xml이란? MyBatis 프레임워크에서 SQL 쿼리와 자바 객체를 매핑하는 데 사용되는 파일

  • BoardMapper의 메서드 이름(boardSave)과 board-mapper.xml 파일의 id이름(boardSave)이 같아야 매핑됨
  • #{}은 MyBatis에서 파라미터 바인딩을 위해 사용되는 플레이스홀더(placeholder)로서, SQL 쿼리 내에서 동적으로 값을 전달하거나 매핑할 때 사용된다.

 

 

4. 게시글 입력 테스트 코드 작성

@SpringBootTest
class BoardProject01ApplicationTests {

    @Autowired
    private BoardMapper mapper;

    @Test
    public void boardWrite() {
        for(int i=1; i<=100; i++) {
            BoardDTO dto = new BoardDTO();
            dto.setTitle("제목테스트"+i);
            dto.setContent("내용테스트"+i);
            mapper.boardSave(dto);
        }
    }

}

소스코드 화면에서 우클릭 -> JUnit Test를 클릭하면 테스트 코드가 실행된다. 초록바가 뜨면 테스트 성공

 

하이디SQL에서 board 테이블을 확인해 보면 1부터 100번까지 게시글 데이터가 입력된 것을 확인할 수 있다.

 

728x90