TDD
TDD 테스트 주도 개발
- Test-Driven Development
- 테스트 클래스를 먼저 만든 후에 구현 클래스를 개발하는 방식
- 여러 명이서 개발할 때는 테스트 케이스 작성은 필수
회원 리포지토리 테스트 케이스 작성
개발한 기능을 실행해서 테스트 할 때 자바의 main 메서드를 통해서 실행하거나, 웹 애플리케이션의 컨트롤러를 통해서 해당 기능을 실행한다.
- 이러한 방법은 준비하고 실행하는데 오래 걸리고, 반복 실행하기 어렵고 여러 테스트를 한 번에 실행하기 어렵다는 단점이 있다.
- Java 는 JUnit 이라는 프레임워크로 테스트를 실행해서 이러한 문제를 해결한다.
회원 리포지토리 메모리 구현체 테스트
src/test/java 하위 폴더에 생성
@Test
- JUnit 테스트 어노테이션
- 테스트 하려는 메서드에 달면 테스트 가능 메서드로 전환
검증
- save 메서드
- DB 의 데이터와 객체를 생성해서 가져온 데이터와 비교해서 똑같다면 검증 성공
JUnit 문법
Assertions.assertEquals(expected, actual);
Assertions.assertEquals(member, result);
Assertions.assertEquals(member, null);
Assertions.assertThat(actual).isEqualTo(expected);
Assertions.assertThat(member).isEqualTo(result);
@AfterEach
public void clearStore() {
store.clear();
}
@AfterEach
public void afterEach() {
repository.clearStore();
}
- 테스트가 끝날 때마다 저장소 삭제
- 테스트가 끝나고 나면 데이터를 정리해야 나머지 테스트에 영향을 안끼친다.
- 테스트는 순서, 의존 관계 없이 설계해야 한다.