SpringBoot - 리포지토리 테스트 케이스

이정우·2022년 2월 18일
0

Spring Boot

목록 보기
5/6

테스트 케이스 사용 이유

main 메소드나 컨트롤러를 통한 Test는 매번 시간이 오래 걸리고 여러 테스트를 한 번에 할 수 없기에 Junit이라는 라이브러리를 이용해서 테스트 케이스를 만들어 사용하는게 효율적이다.

테스트 케이스

경로 : src > test > java > 여기에 test class 작성.
작명 : 보통 테스트 할 메서드 이름 + Test.

순서

  1. 테스트할 메소드의 클래스 생성자 만들기.
MemberRepository repository = new MemoryMemberRepository();
  1. 테스트할 메소드 오버라이딩하기. 이때 @Test라는 junit 기능 사용하기!
 @Test
    public void save(){
		메소드 안에서 객체 생성 밑 임의의 값 넣어주기..
        Member result = repository.findById(member.getId()).get();//옵셔널리는 
        //get메서드로 꺼내올 수 있음
        
        //밑의 assert는 둘 다 앞의 값과 뒤의 값이 같은지를 확인해줌. 위에 assert보다 
        //밑의 assert를 더 자주 씀.
        Assertions.assertEquals(member, result );
        assertThat(member).isEqualTo(result);
        //밑의 assert를 쓰기 위해선 import static org.assertj.core.api.Assertions.*; 필요.
    }

주의할 점

여러 test 메서드를 만들어서 메서드마다 실행 시킬 수도 있지만 클래스 실행을 통해 여러 메소드를 한번에 test 할 수도 있다. 하지만 test시 메소드 실행 순서는 임의로 정해지기에 a메소드의 테스트 값이 b메소드에 영향을 줄 수 있다. 이것을 방지하기 위해 하나의 테스트 메소드가 끝나면 해당 메소드의 정보를 clear 해줄 필요가 있는데 이 기능을 맡는게 밑의 AfterEach이다.

 @AfterEach //test 메소드가 하나 동작을 끝내면 어떤 동작을 함.
    public void afterEach() {
        repository.clearStore(); //메소드를 실행하고 해당 메소드 내용을 다 지움. 이걸 안 해주면 다른 test에 영향을 줄 수 잇음.
    }

clearStorer 메소드의 실행문은 store.clear();으로 모든 내용을 clear해주는 메소드이다.

꿀팁

메소드 여러 번 쓸려고 복붙 하면 이름이 같아서 오류 뜰 때 해당 변수에서 shift + f6 누르면 비슷한 변수 한 번에 수정 가능.

출처 : 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

profile
프로그래밍 공부 중!

0개의 댓글