본문 바로가기

:: System Log

스프링 입문 강의 노트 #10. 백엔드 개발 - 리포지토리 구현체 테스트

 

> 이전글 읽기 : 

2022.02.23 - [:: System Log] - 스프링 입문 강의 노트 #9. 백엔드 개발 - 회원 도메인과 리포지토리 만들기

 

스프링 입문 강의 노트 #9. 백엔드 개발 - 회원 도메인과 리포지토리 만들기

> 이전글 읽기 2022.02.22 - [:: System Log] - 스프링 입문 강의 노트 #8. 백엔드 개발 - 비즈니스 요구사항 정리 이전 글 읽기 : 2022.02.21 - [:: System Log] - 스프링 입문 강의 노트 #7. 웹 개발 기초 - API..

everythingiok.tistory.com

 

[회원 리포지토리 메모리 구현체 테스트]

 

1. src/test/java 하위 폴더에 테스트 클래스 생성
 - Class 네이밍룰 : 테스트하고자 하는 클래스명 + Test 붙이기 // MemoryMemberRepositoryTest
 - public으로 선언안해도됨 - 다른데서 쓸 클래스 아니기 때문에
 - @Test 어노테이션 붙여주면 해당 메서드가 실행됨.
package hello.hellospring.repository;

import hello.hellospring.Repository.MemoryMemberRepository;
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;

import static org.assertj.core.api.Assertions.*;

class MemoryMemberRepositoryTest {

    MemoryMemberRepository repository = new MemoryMemberRepository();

    @AfterEach
    public void afterEach() {
        repository.clearStore();
    }

    @Test
    public void save() {
        Member member = new Member();
        member.setName("springg");

        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.findByName("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("spring2");
        repository.save(member2);

        List<Member> result = repository.findAll();

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




}
 
 
- Assertions.assertEquals // 두값이 동일한지 확인하는 함수 (기대값과 결과값 )
  동일하면 초록불, 실패하면 빨간불로 오류가 발생함.
 
- Assertions.assertThat() 을 최근엔 더 많이 사용함 // [Opt] + [Enter] 치면 Static import 처리됨
 
- findAll 테스트케이스 추가한 뒤에 갑자기 findByName에서 오류나는 이유?
  : 테스트케이스는 순서 상관없이 실행이 되는데, findAll이 먼저 수행되면서 repository에 이미 저장된 객체가 있었고, findByName에서 비교한 객체가 이미 생성된 객체와 비교되면서 fail이 떨어진 것. 그래서 케이스 별로 테스트후에 공용저장소 clear처리 해야함.

repository.clearStore()

 
- 테스트주도개발(TDD) - 테스트케이스를 먼저 만들고, 그에 맞는 구현체를 만드는 방법
 

 


 

> 다음글 읽기 : 

2022.02.25 - [:: System Log] - 스프링 입문 강의 노트 #11. 백엔드 개발 - 회원 서비스 개발

 

스프링 입문 강의 노트 #11. 백엔드 개발 - 회원 서비스 개발

> 이전글 읽기 : 2022.02.23 - [:: System Log] - 스프링 입문 강의 노트 #10. 백엔드 개발 - 리포지토리 구현체 테스트 이전글 읽기 : 2022.02.23 - [:: System Log] - 스프링 입문 강의 노트 #9. 백엔드 개발 -..

everythingiok.tistory.com