본문 바로가기
Spring 입문

스프링MVC 입문10

by danny-j 2022. 11. 10.

repository/MemoryMemberRepositoryTest.java

package com.danny.learningspring.repository;

import com.danny.learningspring.domain.Member;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;

import java.util.List;

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

public class MemoryMemberRepositoryTest {


    MemoryMemberRepository repository = new MemoryMemberRepository();

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

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

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

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

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

}
  • @AfterEach - 테스트는 메서드 실행 순서가 보장되지 않기 때문에 테스트가 끝날때마다 초기화를 해줘야함
    • MemoryMemberRepository클래스에 초기화 메서드 추가 후 @AfterEach로 테스트마다 실행되게 함
    • Test는 서로 의존관계없이 설계되어야하고 Test가 끝날 때마다 공용으로 사용되는 저장소를 초기화 시켜줘야 함
    • TDD -- Test주도 개발 : Test를 먼저 만들고 구현클래스를 만들어서 시험해 봄

 

  • MemoryMemberRepository repository = new MemoryMemberRepository() -- 인터페이스의 구현체 호출
  • @Test -- import org.junit.jupiter.api.Test 어노테이션 import 메서드 하나씩 실행(검증) 가능
  • save() -- 객체 생성 후 save를 하고 다시 그 객체의 id로 조회
    • assertThat(member).isEqualTo(result) -- 생성한 객체와, 생성한 객체의 id로 조회한 객체가 같은 지 비교

 

  • findByName() -- save()와 객체 생성 후 저장하고 조회 똑같음
  • findAll() -- 두개의 객체  생성 후 save시키고 List형태로 전체를 받아옴
    • assertThat(result.size()).isEqualTo(2) -- 두개의 객체를 생성하고 save했기때문에 result에 담긴 값이
      2가 맞는지 확인하는 과정

'Spring 입문' 카테고리의 다른 글

스프링MVC 입문12  (0) 2022.11.11
스프링MVC 입문11  (0) 2022.11.10
스프링MVC 입문09  (0) 2022.11.10
스프링MVC 입문08  (0) 2022.11.09
스프링MVC 입문07  (0) 2022.11.09

댓글