Back-end/Spring

[SpringBoot] Spring Data JPA로 게시판 만들기(2) - repository테스트 코드 작성

poppy 2020. 11. 16. 13:59
반응형

이전 포스팅에 이어서 이번 포스팅을 작성해보겠습니다!

이전 포스팅에서 만들었던 PostsRepository를 테스트해보는 코드를 작성해보겠습니다

 

1. 다음과 같이 패키지와 파일을 만들어줍니다

2.  PostsRepositoryTest

@RunWith(SpringRunner.class)
@SpringBootTest
public class PostsRepositoryTest {

    @Autowired
    PostsRepository postsRepository;

    @After
    public void cleanup() {
        postsRepository.deleteAll(); //모든 데이터 삭제
    }

    @Test
    public void 게시글저장() {
        //given
        String title = "테스트 제목";
        String content = "테스트 내용";

        postsRepository.save(Posts.builder()
                .title(title).content(content).writer("poppy").build()); //빌더패턴 사용

        //when
        List<Posts> postsList = postsRepository.findAll(); //모든 데이터 조회

        //then
        Posts posts = postsList.get(0); //첫번째 데이터 가져옴
        assertThat(posts.getTitle()).isEqualTo(title);
        assertThat(posts.getContent()).isEqualTo(content);
    }
}

@RunWith(SpringRunner.class) - SpringRunner라는 스프링 실행자 사용

@SpringBootTest - @SpringBootApplication을 찾아서 테스트를 위한 빈들을 다 생성합니다

@Autowired - 스프링 빈을 주입받습니다

@After - 단위 테스트가 끝날 때 수행되는 메소드를 지정하는 것입니다. 이 코드에서는 단위 테스트마다 모든 데이터를 지움으로써 다음에 단위 테스트를 할 때 데이터가 깨끗한 상태로 유지하기 위함입니다

postsRepository.save() - save메소드는 테이블에 insert나 update 쿼리를 실행합니다. ID값이 있다면 update 쿼리를 실행하고, ID값이 없다면 insert쿼리를 실행합니다. 이 코드에서는 insert쿼리를 실행합니다

assertThat(posts.getTitle()).isEqualTo(title); - post테이블의 제목을 가져와서 "테스트 제목"과 같은지 검증합니다

반응형