개발한 기능을 실행하여 테스트를 진행할 때
자바의 main 메서드를 실행하거나 웹 어플리케이션의 컨트롤러를 통해서 기능 실행한다.
하지만 이러한 방법은 실행하는데 오래걸리고 여러 테스트를 진행하기 힘들다.
자바는 JUnit이라는 프레임워크로 테스트코드를 실행하여 테스트를 진행할 수 있다.
Java에서 흔히 사용하는 테스트 라이브러리로 Spring Framework에 기본으로 탑재되어있다.
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.AfterEach;
import static org.assertj.core.api.Assertions.*;
테스트 메서드를 작성한다.
@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
public void afterEach() {
repository.clearStore();
}
각 테스트 메서드는 종료시 @AfterEach를 호출한다. 이를 이용하여 테스트가 끝날때마다 데이터를 클리어할 수 있다.
Class 레벨에서 테스트를 run하면 전체를 테스트 메소드를 실행할 수 있다.
전체 테스트를 실행하면 테스트 메소드의 순서는 보장되지 않는다.
- 각 테스트 메소드는 실행 순서와 상관 없도록 해야한다.
- 각 메소드는 서로가 의존적이지 않도록 작성해야 한다.
테스트를 케이스를 먼저 만들고 클래스를 구현하며 테스트 결과를 충족시키도록 개발하는 방법을 말한다.