100세까지 코딩
[스트링 입문] 회원 리포지토리 테스트 케이스 작성 본문
출처 : 김영한님의 스프링 입문
테스트 케이스
package hello.hellospring.repository;
import hello.hellospring.domain.Member;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import java.util.List;
import static org.assertj.core.api.Assertions.*;
public class MemoryMemberRepositoryTest {
MemoryMemberRepository repository = new MemoryMemberRepository();
@AfterEach
public void afterEach(){
repository.clearStore();
}
@Test
public void save(){
Member member = new Member();
member.setName("spring");
repository.save(member);
Member result = repository.findById(member.getId()).get();
assertThat(member).isEqualTo(result);
}
@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);
}
@Test
public void findAll(){
Member member1 = new Member();
member1.setName("spring1");
repository.save(member1);
Member member2 = new Member();
member2.setName("spring2");
repository.save(member2);
List<Member> result = repository.findAll();
assertThat(result).size().isEqualTo(2);
}
}
afterEach
1. 테스트 메서드 실행 후에 무조건 실행한다.
2. 테스트 메서드는 순서를 보장할 수 없다. (서로 의존관계 없이 설계되어야 한다).
3. 하나의 테스트가 끝날 때마다 공용 데이터를 깔끔하게 지워야 한다.
4. clearStore로 데이터 깔끔하게 초기화한다.
JUnit의 assertThat VS assertj의 assertThat
1. 자동완성
2. Assertion 분류
3. 확장성 및 가독성 (메소드 체이닝)
이유로 요즘은 assertj의 assertThat을 많이 쓴다.
TDD
테스트 주도 개발 (Test Driven Development).
테스트 케이스를 먼저 만들고 통과할 수 있게 기능들을 만드는 것.
'백엔드 > 스프링 입문' 카테고리의 다른 글
[스프링 입문] 회원 서비스 테스트 (2) | 2023.12.05 |
---|---|
[스프링 입문] 회원 서비스 개발 (0) | 2023.12.02 |
[스프링 입문] 회원 도메인과 리포지토리 만들기 (0) | 2023.12.01 |
[스프링 입문] 웹 개발 기초 (1) | 2023.11.28 |
[스프링 입문] 윈도우 명령 프롬프트에서 Gradle 빌드 (0) | 2023.11.27 |