repository/MemoryMemberRepositoryTest.java
package com.danny.learningspring.repository;
import com.danny.learningspring.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("string");
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.findName("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("spring1");
repository.save(member2);
List<Member> result = repository.findAll();
assertThat(result.size()).isEqualTo(2);
}
}
- @AfterEach - 테스트는 메서드 실행 순서가 보장되지 않기 때문에 테스트가 끝날때마다 초기화를 해줘야함
- MemoryMemberRepository클래스에 초기화 메서드 추가 후 @AfterEach로 테스트마다 실행되게 함
- Test는 서로 의존관계없이 설계되어야하고 Test가 끝날 때마다 공용으로 사용되는 저장소를 초기화 시켜줘야 함
- TDD -- Test주도 개발 : Test를 먼저 만들고 구현클래스를 만들어서 시험해 봄
- MemoryMemberRepository repository = new MemoryMemberRepository() -- 인터페이스의 구현체 호출
- @Test -- import org.junit.jupiter.api.Test 어노테이션 import 메서드 하나씩 실행(검증) 가능
- save() -- 객체 생성 후 save를 하고 다시 그 객체의 id로 조회
- assertThat(member).isEqualTo(result) -- 생성한 객체와, 생성한 객체의 id로 조회한 객체가 같은 지 비교
- findByName() -- save()와 객체 생성 후 저장하고 조회 똑같음
- findAll() -- 두개의 객체 생성 후 save시키고 List형태로 전체를 받아옴
- assertThat(result.size()).isEqualTo(2) -- 두개의 객체를 생성하고 save했기때문에 result에 담긴 값이
2가 맞는지 확인하는 과정
- assertThat(result.size()).isEqualTo(2) -- 두개의 객체를 생성하고 save했기때문에 result에 담긴 값이
'Spring 입문' 카테고리의 다른 글
스프링MVC 입문12 (0) | 2022.11.11 |
---|---|
스프링MVC 입문11 (0) | 2022.11.10 |
스프링MVC 입문09 (0) | 2022.11.10 |
스프링MVC 입문08 (0) | 2022.11.09 |
스프링MVC 입문07 (0) | 2022.11.09 |
댓글