본문 바로가기

기록/스프링 부트와 AWS로 혼자 구현하는 웹 서비스

Chapter 3. Spring Data JPA 테스트 코드 작성하기

728x90
SMALL
package com.jojoldu.book.springboot.domain.posts;

import org.junit.After;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.List;

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

@RunWith(SpringRunner.class)
@SpringBootTest // 별다른 설정이 없을 경우 H2 데이터베이스를 자동으로 실행.
public class PostsRepositoryTest {

    @Autowired
    PostsRepository postsRepository;

    @After // Junit에서 단위 테스트가 끝날 때마다 수행되는 메소드를 지정.
    public void cleanup(){
        postsRepository.deleteAll();
    }

    @Test
    public void 게시글저장_불러오기(){
        // given
        String title = "테스트 게시글";
        String content = "테스트 본문";

        postsRepository.save(Posts.builder() // 테이블 posts에 insert/update 쿼리를 실행. id 값이 있다면 update가, 없다면 insert 쿼리가 실행.
                .title(title)
                .content(content)
                .author("jadejung95@gmail.com")
                .build());

        //when
        List<Posts> postsList = postsRepository.findAll(); // 테이블 posts에 있는 모든 데이터를 조회해오는 메소드

        //then
        Posts posts = postsList.get(0);
        assertThat(posts.getTitle()).isEqualTo(title);
        assertThat(posts.getContent()).isEqualTo(content);
    }
}

 

실제로 실행된 쿼리는 어떤 형태인 지 로그로 확인하려면 ?

: 스프링 부트에서는 application.properties, application.yml 등의 파일로 한 줄의 코드로 설정할 수 있도록 지원하고 권장한다.

 

src/main/resource 디렉토리 아래에 application.properties 파일을 생성한 후

spring.jpa.show_sql=true 옵션을 추가한다.

 

그리고 테스트를 실행하면 콘솔에서 쿼리 로그를 확인할 수 있다.

 

다만 , create table 쿼리를 보면 id bigint generated by default as identity 라는 옵션으로 생성된다.

이는 H2 쿼리의 문법이 적용되었기 때문이다.

 

출력되는 쿼리 로그를 MySQL 버전으로 변경해보자. (H2는 MySQL의 쿼리를 수행해도 정상적으로 작동한다)

application.properties 파일에 다음 코드를 추가하면 된다.

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect

 

추가한 후 다시 테스트를 실행해보면. 다음과 같이 옵션이 잘 적용되었음을 확인할 수 있다.

 JPA와 H2에 대한 기본적인 기능과 설정을 진행했으니, 본격적으로 API를 만들어보자.

728x90