Spring/스프링 핵심 원리 - 기본편

9. 회원 도메인 실행과 테스트 | 회원 도메인 설계의 문제점

DEV-HJ 2023. 3. 12. 17:14
반응형

회원 도메인 - 회원 가입 main

package hello.core;

import hello.core.member.Grade;
import hello.core.member.Member;
import hello.core.member.MemberService;
import hello.core.member.MemberServiceImpl;

public class MemberApp {

    public static void main(String[] args){

        // 순수한 JAVA 코드
        MemberService memberService = new MemberServiceImpl();
        Member memberA = new Member(1L, "memberA", Grade.VIP);
        memberService.join(memberA);

        Member findMember = memberService.findMember(1l);

        System.out.println("new Member = "+ memberA.getName());
        System.out.println("findMember = "+findMember.getName());





    }
}

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

 


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

package hello.core.member;


import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;


public class MemberServiceTest {

    MemberService memberService = new MemberServiceImpl();

    @Test
    void join(){
        // give
        Member member = new Member(1L, "memberA", Grade.VIP);

        //when
        memberService.join(member);
        Member findMember =  memberService.findMember(1L);

        //then
        Assertions.assertThat(member).isEqualTo(findMember);
    }
}


 

회원 도메인 설계의 문제점

- 이 코드의 설계상 문제점은 무엇일까요?
- 다른 저장소로 변경할 때 OCP 원칙을 잘 준수할까요?
DIP를 잘 지키고 있을까요?
의존관계가 인터페이스 뿐만 아니라 구현까지 모두 의존하는 문제점이 있음 → 주문까지 만들고나서 문제점과 해결 방안을 설명

반응형