main 메소드나 컨트롤러를 통한 Test는 매번 시간이 오래 걸리고 여러 테스트를 한 번에 할 수 없기에 Junit이라는 라이브러리를 이용해서 테스트 케이스를 만들어 사용하는게 효율적이다.
경로 : src > test > java > 여기에 test class 작성.
작명 : 보통 테스트 할 메서드 이름 + Test.
MemberRepository repository = new MemoryMemberRepository();
@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 누르면 비슷한 변수 한 번에 수정 가능.