10 회원 도메인과 레포지토리 테스트

이연희·2022년 1월 18일
0

Spring

목록 보기
10/105

회원 레포지토리 테스트 케이스

MemoryMemeberRepositoryTest.java

  • 테스트 케이스
package hello.hellospring.repository;

import hello.hellospring.domain.Member;
import hello.hellospring.repository.MemberRepository;
import hello.hellospring.repository.MemoryMemberRepository;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

import java.util.List;
import java.util.Optional;

public class MemoryMemberRepositoryTest {
    MemoryMemberRepository repository = new MemoryMemberRepository();
    
    @Test
    public void save(){
        Member member = new Member();
        member.setName("spring");
        repository.save(member);

        Member result = repository.findById(member.getId()).get();

        //검증1
        System.out.println("result = "+(result==member));
        //검증2
        Assertions.assertEquals(member,result);
        //다를 경우
        //Assertions.assertEquals(member,null);
        //검증3
    }
    @Test
    public void findByName(){
        Member member1 = new Member();
        member1.setName("spring1");
        repository.save(member1);

        Member member2 = new Member();//shift+f6: rename
        member2.setName("spring2");
        repository.save(member2);

        Member result = repository.findByName("spring1").get();//get()을 쓰면 Optional을 한번 까는 것
        Assertions.assertEquals(member1,result);
    }

    @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.assertEquals(result.size(),2);
    }
}
  • 한번에 테스트 실행 시 순서는 일정하지 않음

  • 해결방안: Test가 하나 끝나면 데이터를 클리어 시켜줘야 한다.

  • clearStore(): 메서드 하나가 실행된 후 저장소를 비움

MemoryMemeberRepository.java

public void clearStore(){
        store.clear();
}

MemoryMemeberRepositoryTest.java

@AfterEach
    public void afterEach(){//메서드가 끝날 때마다 실행되는 메서드: 콜백메서드
        repository.clearStore();
    }

코드 규모가 커질수록 테스팅 없이 개발 불가능

Tip) 테스트 주도 개발(TDD: Test Driven Development): 테스트 케이스 틀을 먼저 만들고 개발을 진행하는 방식


스프링입문10(김영한)

profile
공부기록

0개의 댓글