📌 회원 리포지토리 테스트 케이스 작성
JUnit
이라는 프레임워크로 테스트 코드를 작성 후 실행main
쪽이 아닌test
쪽에 작성
✔️ save()
동작 확인
package hello.hellospring.repository;
import hello.hellospring.domain.Member;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
class MemoryMemberRepositoryTest {
MemberRepository repository = new MemoryMemberRepository();
@Test
public void save() {
Member member = new Member();
member.setName("spring");
repository.save(member);
Member result = repository.findById(member.getId()).get();
Assertions.assertThat(member).isEqualTo(result);
}
}
@Test
:org.junit.jupiter.api
import- 'spring'이라고 name 세팅
- 리포지토리에
member
를 저장함findById()
: 리포지토리에 save하면 sequence 증가로 id가 세팅됨.findById()
의 반환 타입이Optional
이기 때문에Optional
에서 값을 꺼낼 때는get()
으로 꺼냄Assertions(org.assertj.core.api)
: 저장한 것과 DB에서 꺼낸 것이 같은지 검증
✔️ findByName()
동작 확인
@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);
}
findByName()
은 String형
✔️ findAll()
동작 확인
@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
public void afterEach() {
repository.clearStore();
}
테스트 실행 시 메소드가 순차적으로 진행되지 않기에 의존 관계 없이 설계되어야 함
따라서 메소드 테스트 실행 후 리포지토리/공용 데이터가 삭제되도록afterEach()
사용