JUnit이라는 프레임워크로 테스트를 실행할 수 있다. 테스트 코드 자체를 실행하여 테스트한다.
구현 클래스인(MemoryMemberRepositoryTest)의 테스트를 확인하기 위해서 test폴더에 repository 패키지를 만들고 Test 클래스를 만든다.
save()메소드 검증
이름을 TestCase에서 넣어주고 실제 구현 클래스 객체인 respository.save메소드를 검증한다.
result값으로 Member 객체를 가져오는데 이것이 테스트 객체와 같은지 비교한다.
주로 주석처리 안된 명령어로 테스트한다.
findByName() 메소드 검증
이것도 테스트로 만든 객체와 실제 실행된 객체와 같은지 비교한다.
findAll() 메소드 검증
List 객체로 받고 이 객체의 길이가 2개와 같은지 비교한다.
메소드 각각 검증가능하지만 한꺼번에도 가능하다.
class 옆에 한꺼번에 실행하는 버튼을 누르면 전체 실행 가능하다.
하지만 순서는 save() , findByName(), findAll() 순서로 테스트 케이스 작성했지만 실행은 순서 상관없이한다. findAll()에서 member1, member2 객체를 생성했다.그리고 findByName에서 또한 member1, member2객체를 생성했는데 실제로 테스트해보면 findAll()에서 만든 member1이 나와 False가 되서 에러가 뜬다.
이것을 해결하는 방법은 clear해줘야한다.
즉 @Test가 끝나면 콜백함수로 @AfterEach가 호출되고 clearStore()메소드가 실행된다.
clearStore은 Hashmap을 초기화하는 코드이다.