Test 만드는 단축키
- 테스트 만들 클래스 켜두고 Alt + Insert -> 테스트 or Shift + Ctrl + T
:: Repository Test
Repository Test Code
:: Junit Test
Assertions.assertEquals(member, result);
Junit 테스트 프레임워크
Assertions.assertThat(result).isEqualTo(member);
AssertJ 테스트 프레임워크
Alt + Enter를 눌러 static으로 만들어 Assrtions를 쓰지 않고 사용할 수 있다.
:: @AfterEach
- 각 테스트가 종료될 때 마다 실행하여 메모리 DB에 저장된 데이터를 삭제
@AfterEach
public void afterEach() {
repository.clearStore();
}
:: Service
Service Code
- Service는 비즈니스 로직을 구현하는 것
- 중복 회원 관련 코드에 findByName 같은 로직이 있으면 메서드로 빼는 것이 좋다
- 리팩토링 중 특정 로직 메서드로 분리할때 사용
- 메서드 만들 부분 드래그 후 Shift+Ctrl+Alt+T -> 메서드 추출
:: Service Test
ServiceTest Code
- 테스트는 메서드명을 한글로 적어도 무방하다.
- 내용을 먼저 적고 그것을 변수로 만들려면 윈도우 기준 Ctrl + Alt + v
:: give / when / then 기법
- give : 무언가가 주어졌는데
- when : 이걸로 실행했을 때
- then : 결과가 이걸로 나와야 한다.
:: @BeforeEach
- 각 테스트 실행 전에 호출
- 테스트가 서로 영향이 없도록 항상 새로운 객체를 생성하고, 의존관계도 새로 맺어준다.
:: 의존성 주입 (DI)
- @AfterEach을 사용하려면 repository 객체 생성하는데 여러 테스트에서 필요할 때 다 new 해주면 각각은 다른 객체가 됨
- 같은 리포지토리로 해야 한다.
1. Service 파일 변경
private final MemberReository memberReository;
public MemberService(MemberReository memberReository) {
this.memberReository = memberReository;
}
2. serviceTest 파일 변경
MemberService memberService;
MemoryMemberRepository memberRepository;
@BeforeEach
public void beforEach() {
memberRepository = new MemoryMemberRepository();
memberService = new MemberService(memberRepository);
}