[스프링 입문] 회원 리포지토리 테스트 케이스 작성

김대준·2021년 12월 14일
0

spring

목록 보기
2/25
post-thumbnail

📌 테스트 케이스 작성

✔ JUnit 프레임워크로 테스트 실행

✔ 클래스 단위로 테스트 코드를 실행 시킬경우 메소드의 순서가 순차적이지 않다.
  ┗ 테스트 코드의 메서드가 하나 끝나고 나면 해당 테스트 코드의 데이터를 없애야 한다.

✔ 테스트는 각각 독립적으로 실행 되어야한다. 테스트 순서가 의존관계가 있는 것은 좋은 테스트가 아니다.

✔ 테스트 코드를 먼저 작성하고 기능 구현하는것이 TDD(테스트 주도개발) 방식


@Test : 해당 메소드를 태스트 대상으로

@AfterEach : 테스트 메서드가 종료될 때 마다 해당 메서드 실행. 여기서 주로 메모리 DB에 저장된 데이터를 삭제한다.

Assertions.assertEquals(A,B) : A와 B가 같은지 확인. 반환값 없음

Assertions.assertThat(A).isEqualTo(B) : A가 B와 같은지 확인. 반환값 없음. 더 많이 쓰임

package hello.hellospring.repository;

import hello.hellospring.domain.Member;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;

import java.util.List;

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();

        Assertions.assertThat(member).isEqualTo(result);
//        Assertions.assertEquals(member, null);


    }

    @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();

        Assertions.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();

        Assertions.assertThat(result.size()).isEqualTo(2);

    }

}
profile
kureungkureung

0개의 댓글