회원 리포지토리가 내가 원하는대로 정상 작동하는지 코드를 코드로 검증하는 방법
개발한 기능을 실행해서 테스트 할 때
자바의 main 메서드를 통해서 실행하거나
웹 애플리케이션의 컨트롤러를 통해서 해당 기능을 실행한다
이러한 방법은 준비하고 실행하는데 오래 걸리고 반복 실행하기 어렵고
여러 테스트를 한번에 실행하기 어렵다는 단점이 있다
자바는 JUnit이라는 프레임워크로 테스트 코드 자체를 실행해서 이러한 문제를 해결한다
test / java / repository (새 package 생성) / MemoryMemberRepositoryTest.class 생성
굳이 public일 필요는 없음
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 java.util.Optional;
import static org.assertj.core.api.Assertions.*;
class MemoryMemberRepositoryTest {
MemoryMemberRepository repository = new MemoryMemberRepository();
@AfterEach
public void afterEach() {
repository.clearStore();
}
@Test //import하고 save 메서드 실행 테스트
public void save() {
//given
Member member = new Member();
member.setName("spring");
//when
repository.save(member);
//then
Member result = repository.findById(member.getId()).get(); // 제대로 저장되었는지 확인
//System.out.println("result = " + (result == member)); // 저장한 것과 db에서 꺼낸 것이 같으면 참 -> 정상작동
//Assertions.assertEquals(member, result); //result 대신 null 넣으면 오류
assertThat(result).isEqualTo(member); // result가 member랑 똑같은가
}
@Test
public void findByName() {
//given
Member member1 = new Member();
member1.setName("spring1");
repository.save(member1);
Member member2 = new Member();
member2.setName("spring2");
repository.save(member2);
//when
Member result = repository.findByName("spring1").get();
//then
assertThat(result).isEqualTo(member1);
}
@Test
public void findAll() {
//given
Member member1 = new Member();
member1.setName("spring1");
repository.save(member1);
//shift f6 -> rename 기능
Member member2 = new Member();
member2.setName("spring2");
repository.save(member2);
//when
List<Member> result = repository.findAll();
//then
assertThat(result.size()).isEqualTo(2);
}
}
테스트 클래스부터 작성하고 리포지토리 만드는 것
-> 테스트 주도 개발 TDD : 테스트 먼저 만들고 구현 클래스 만드는 것
'[ Development ] > [ Back-end ] Spring 기본' 카테고리의 다른 글
[Spring 스프링] 5. 회원 관리 예제 - 웹 MVC 개발 (0) | 2023.10.10 |
---|---|
[Spring 스프링] 4. 스프링 빈과 의존관계 (0) | 2023.10.10 |
[Spring 스프링] 3. 회원 관리 예제 4 - 회원 서비스 개발 및 테스트 (1) | 2023.10.03 |
[Spring 스프링] 3. 회원 관리 예제 2 - 회원 도메인과 리포지토리 만들기 (0) | 2023.10.03 |
[Spring 스프링] 3. 회원 관리 예제 1 - 비즈니스 요구사항 정리 (0) | 2023.10.03 |
[Spring 스프링] 2-3. API (0) | 2023.10.03 |
[Spring 스프링] 2-2. MVC와 템플릿 엔진 (0) | 2023.10.03 |