Kim-Baek 개발자 이야기

[스프링 핵심원리] 10. 회원 도메인 실행과 테스트 본문

개발/Spring

[스프링 핵심원리] 10. 회원 도메인 실행과 테스트

김백개발자 2021. 9. 29. 20:56
김영한님의 [스프링 핵심 원리] 강의를 정리하고, 내가 생각한 내용까지 정리하는 포스팅

지난번에 만든 회원도메인에 대해서 실행을 해보고 테스트를 해볼 수 있도록 하자.

package core.order;

import core.order.member.*;
import core.order.member.MemberService;
import core.order.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("findMember = " + findMember.getName());
    }
}

psvm 이라고 치고 자동완성을 하면 기본 메인 메소드가 만들어진다. 그리고 안에 내용을 이렇게 채워주자. 

멤버를 하나 만들고, 멤버서비스를 통해서 가입을 시킨다. 그리고 멤버서비스를 통해서 가입된 회원번호로 멤버를 찾는다. 이 때 처음에 만든 멤버와 가입된 멤버의 이름을 출력해보자.

동일하게 출력되는 것을 확인할 수 있다. 순수하게 자바로 작성한 회원 도메인에 대한 테스트이다.

그리고 option + command + v 단축키를 하면 코드에서 리턴 값이 있는 메소드 같은 것에 대해서는 자동으로 할당 값을 만들어주는 키가 있다. 유용하니 익혀두도록 하자.

마찬가지로 soutv 를 사용하면, 기본적은 sout 에서 위에 있는 변수를 선택해서 출력하는 기능도 있어서 좋은 것 같다.

이런 테스트는 매번 이렇게 출력을 하려면 어려우니, junit 을 사용할 수 있도록 한다.

package core.order.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);
    }
}

given, when, then 으로 테스트를 나눠볼 수 있다.

given 은 이렇게 주어진 조건에서, when 이렇게 동작을 하면, then 이런 결과가 나온다는 것이다. 이것도 실행시켜보면 정상적으로 테스트가 통과하는 것을 확인할 수 있다. 

동작은 정상적으로 하지만 문제가 있다는 것을 알 수 있다. 

회원 도메인 설계의 문제점

- 다른 저장소로 변경할 때 OCP 원칙이 지켜질지를 고민
- DIP도 지켜지고 있는가?

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

이런 문제가 있는데, 강의가 진행되면서 고쳐질 예정이다. 

https://github.com/bgc8214/spring-core/tree/step2


 

반응형
Comments