반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
11-08 03:45
관리 메뉴

ImJay

[Java Spring] 2-11. 회원 도메인 실행과 테스트 본문

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

[Java Spring] 2-11. 회원 도메인 실행과 테스트

ImJay 2023. 2. 27. 18:14
반응형

[Java Spring] 2-11. 회원 도메인 실행과 테스트


1. 앞서 클래스 다이어그램은 정적이고, 객체 다이어그램은 동적이라고 설명한 바 있다.

 

2. 이전 시간 클래스 다이어그램을 바탕으로 프로그램을 작성하였다. 이번에는 실행과 테스트로 객체 다이어그램에 대한 프로그램을 제작해보자.

 

3. hello.core 패키지 내에 MemberApp 클래스 생성

 

4. 코드 작성

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) {
        MemberService memberService = new MemberServiceImpl();
        Member member = new Member(1L, "memberA", Grade.VIP);
        memberService.join(member);

        Member findMember = memberService.findMember(1L);
        System.out.println("new member = " + member.getName());
        System.out.println("find Member = " + findMember.getName());
    }
}

- main 메서드의 단축키는 psvm 이다.

- id 에 L을 붙인건 Long Type 이기 때문이다.

- 변수 선언 단축키 ctrl + alt + v

- 변수 출력 단축키 soutv

 

5. 빌드

- 본 코드는 스프링 사용 없이 순수하게 자바 코드로만 작성되었다.

- 순수한 자바로만 개발되었다.

- 메인 메서드로 테스트 확인은 좋은 방법이 아니다.

 

6. test > java > hello.core 패키지 내에 member 패키지 생성

 

7. MemberServiceTest 클래스 생성

 

8. 코드 작성

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() {
        //given
        Member member = new Member(1L, "memberA", Grade.VIP);
        
        //when
        memberService.join(member);
        Member findMember = memberService.findMember(1L);

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

 

9. 빌드

- 메인 메서드로 테스트 하는 것에 비해 훨씬 직관적이고 간단하게 테스트를 확인할 수 있다.

- 테스트 코드는 선택이 아닌 필수이고, 테스트 코드를 잘 작성하는게 매우 중요하다.

 

10. 회원 도메인 설계의 문제점

- 이 코드의 설계상 문제점은 무엇일까요?

- 다른 저장소로 변경할 때 OCP 원칙을 잘 준수할까요?

- DIP를 잘 지키고 있을까요?

- 의존관계가 인터페이스 뿐만 아니라 구현까지 모두 의존하는 문제점이 있음

- 주문까지 만들고나서 문제점과 해결 방안을 설명

반응형
Comments