[Spring boot] 테스트케이스 작성

Ho·2022년 6월 23일
0

Spring Boot 입문

목록 보기
3/7

테스트 케이스

개발한 기능을 실행하여 테스트를 진행할 때
자바의 main 메서드를 실행하거나 웹 어플리케이션의 컨트롤러를 통해서 기능 실행한다.
하지만 이러한 방법은 실행하는데 오래걸리고 여러 테스트를 진행하기 힘들다.
자바는 JUnit이라는 프레임워크로 테스트코드를 실행하여 테스트를 진행할 수 있다.


Junit5

Java에서 흔히 사용하는 테스트 라이브러리로 Spring Framework에 기본으로 탑재되어있다.


테스트 코드 작성하기

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.AfterEach;
import static org.assertj.core.api.Assertions.*;

@Test

테스트 메서드를 작성한다.

    @Test
    public void findByName() {
        Member member1 = new Member();
        member1.setName("spring1");
        repository.save(member1);

        Member member2 = new Member();
        member2.setName("spring2");
        repository.save(member2);

        Member result = repository.findByName("spring1").get();
        assertThat(result).isEqualTo(member1);
    }

assertThat을 이용하여 기대값, 결과를 비교할 수 있다.


전체 테스트를 실행하면 테스트 메소드의 순서는 보장되지 않는다.
각 테스트 메소드는 순서와 메소드 서로가 의존적이지 않도록 작성해야 한다.
테스트케이스 하나가 끝날 때 데이터를 클리어해줘야한다.

@AfterEach

  • 메소드가 끝나고 실행되는 콜백 메소드
    @AfterEach
    public void afterEach() {
        repository.clearStore();
    }

각 테스트 메서드는 종료시 @AfterEach를 호출한다. 이를 이용하여 테스트가 끝날때마다 데이터를 클리어할 수 있다.


Class 레벨에서 테스트를 run하면 전체를 테스트 메소드를 실행할 수 있다.

전체 테스트를 실행하면 테스트 메소드의 순서는 보장되지 않는다.

  • 각 테스트 메소드는 실행 순서와 상관 없도록 해야한다.
  • 각 메소드는 서로가 의존적이지 않도록 작성해야 한다.


테스트주도 개발(TDD)

테스트를 케이스를 먼저 만들고 클래스를 구현하며 테스트 결과를 충족시키도록 개발하는 방법을 말한다.

0개의 댓글