이전 강의에서는 Test 어노테이션을 일일이 달았는데,
인텔리제이에서는 게터 세터처럼 자동적으로 테스트 메서드를 껍데기를 만들어주는 단축키가 있다! (Ctrl+Shift+T)
//MemberServiceTest.java
MemberService memberService = new MemberService(memberRepository);
MemoryMemberRepository memberRepository = new MemoryMemberRepository();
또,MemberService 클래스를 테스트하다보면,
테스트 케이스의 MemberRepository와 MemberService클래스 내에서 new로 생성하는 MemberRespository가 다름을 알 수 있다.
//MemberRepositoryTest.java
class MemberServiceTest {
MemberService memberService = new MemberService(memberRepository);
MemoryMemberRepository memberRepository = new MemoryMemberRepository(); //얘랑 위에서 생성한 memberService안에 내제된 memberRepository는 다른 개체임
@AfterEach
public void afterEach(){
memberRepository.clearStore();
....
이는 memberservice가 외부에서 생성된 repository를 받아오는 방식으로 생성자를 만들어주면 된다.
//MemberService.java
private final MemberRepository memberRepository;
public MemberService(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
//MemberRepositoryTest.java
MemberService memberService;
MemoryMemberRepository memberRepository;
@BeforeEach
public void beforeEach(){
memberRepository=new MemoryMemberRepository();
memberService=new MemberService(memberRepository);
}
이러한 외부에서 받아오는 방식을 DI (의존관계 주입 - Dependency Injection)이라 한다.
아 어려워