본문 바로가기

Spring

[Spring]회원 관리 Backend 개발(2) - Test 케이스 작성

개발 기능을 test할 경우 main 메서드 또는 Controller를 사용한다.

하지만 여기서 문제는 시간이 오래 걸리고 반복 실행하기 어려우며 한번에 여러 test하기 어렵다.

그래서 JUnit 프레임워크로 test를 진행할 것이다.

 

주의할 점은 Test 내의 각각 메서드는 의존 관계가 없다.

즉, 순서가 정해진 것이 아닌 각자의 역할을 하고 연결되지 않는다는 것이다.

그래서 저장소, 공용 Data를 하나 끝날 때마다 제거해야 한다.

 

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;
import java.util.Optional;

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

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

}