[SpringBoot] 회원 관리 예제 (3)

hrotlzl·2022년 1월 25일
0

SpringBoot

목록 보기
8/9
post-thumbnail

📌 회원 리포지토리 테스트 케이스 작성

  • JUnit 이라는 프레임워크로 테스트 코드를 작성 후 실행
  • main 쪽이 아닌 test 쪽에 작성

✔️ save() 동작 확인

  • MemoryRepositoryTest.java
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() 사용

profile
Back-End

0개의 댓글