반응형

이번에는 회원 도메인 실행과 테스트를 해볼 것이다.

 

회원 객체 다이어그램을 실제로 만들어 보는 것이다.

실제로 런타임에 동작을 하면, 클라이언트는 MemberServiceImpl 이라는 회원 서비스를 사용하게 되고,
회원 서비스는  메모리 회원 저장소(MemoryMemberRepository)를 사용하게 된다.

실제 인스턴스간의 참조그림은 위와 같다.

실제 동작하는지 실행과 테스트를 해보자.

 


 

회원 도메인 실행과 테스트

  • 회원 도메인 - 회원 가입 main

애플리케이션 로직으로 이렇게 테스트 하는 것은 좋은 방법이 아니다. JUnit 테스트를 사용하자.

 

  • 회원 도메인 - 회원 가입 테스트

Test폴더에 member패키지를 생성하고, 거기에 MemberServiceTest 클래스를 만들었다.

Assertions는 org.assertj.core.api 것을 사용하자.

 

테스트를 돌려보면,

테스트에 통과헀다.

 

회원 도메인 설계의 문제점

  • 이 코드의 설게상 문제점은 무엇일까?
  • 다른 저장소로 변경할 때 OCP 원칙을 잘 준수할까?
  • DIP를 잘 지키고 있을까?
  • 의존관계가 인터페이스 뿐만 아니라 구현까지 모두 의존하는 문제점이 있음

 

MemberServiceImpl 에서 MemberRepository인터페이스의 구현체인 MemoryMemberRepository에
의존하는 문제가 있다.

즉, MemberServiceImple은 MemberRepsitory에도 의존하고, MemoryMemberRepository에도 의존 하고있는 것이다. (추상화에도 의존하고 구체화에도 의존하고 있음)

이것은 한마디로 DIP를 위반하고 있는 것이고, 변경할 때 문제가 된다.

반응형