간단한 회원 관리 시스템 만들기~
public Member save(Member member) : 회원을 repository에 저장하는 함수(Create)public Optional<Member> findById(Long id) : id 값으로 회원 검색(Read)Optional.ofNullable() 함수로 리턴값을 감싸준다public Optional<Member> findByName(String name) : 이름으로 회원 검색(Read)변수.values().stream().filter().filter(member -> member.getName().equals(name)).findAny()public List<Member> findAll() : 모든 회원 리스트(Read)store.values()new ArrayList<>(store.values())JUnit을 사용해 테스트 케이스 작성함
클래스 이름 + Test로 작성public void clearStore(){
store.clear();
}@AfterEach
public void afterEach(){
repository.clearStore();
}테스트 코드의 메소드 이름은 한글로 적어도 됨!
테스트 코드 작성할 때 given, when, then 으로 작성하면 편함
테스트는 예외 처리가 잘 되는 지 검증하는 게 중요함!
서비스를 테스트 할 때에도 repository 데이터를 리셋해줘야 함
그런데 서비스 내부에 repository를 정의해둠
테스트 할 때 또 repository를 만들 이유가 없음
memberRepository를 constructor로 만들자
test code에서 @BeforeEach로 memory 인스턴스 생성 후 service 생성할 때 memory 인스턴스를 전달해줌
이런걸 Dependency Injection 이라고 함
service
private final MemberRepository memberRepository;
public MemberService(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
test
MemberService memberService;
MemoryMemberRepository memberRepository;
@BeforeEach
public void beforeEach(){
memberRepository = new MemoryMemberRepository();
memberService = new MemberService(memberRepository);
}
*. import할 때 단축키 : alt+enter
*. 리턴값의 변수형과 이름을 자동으로 만들어주는 단축키 : ctrl+alt+v
*. 블록 지정한 줄을 메서드로 바꾸는 단축키(리팩토링) : ctrl+alt+shift+t
*. 작성한 클래스의 테스트 파일 만드는 단축키 : ctrl+shift+t
*. 변수명 변경 : shift+f6