Spring 핵심 원리 - 테스트

김태훈·2023년 1월 4일
0

Spring 핵심 원리

목록 보기
3/15

1. 직접 테스트 코드 (빌드) 실행하기

JUnit 프레임워크를 사용하지 않고 테스트 코드를 작성하자.
프로젝트 폴더 안에 MemberApp 클래스를 생성한다.
이 클래스에서 직접 main 메소드로 코드를 실행할 예정이다.

package Goat.core;

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

public class MemberApp {
    public static void main(String[] args) {
        MemberService memberService = new MemberServiceImpl();
        Member member = new Member(1L,"GOAT", Grade.VIP);
        memberService.join(member);

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

< 결과 >

2. JUnit 테스트 프레임워크 사용

package Goat.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,"Goat1",Grade.VIP);

        //when
        memberService.join(member);
        Member findMember = memberService.findMember(1L);
        //then
        Assertions.assertThat(member).isEqualTo(findMember);
    }
}

여기서 문제점은?

분명, 구현체에 의존하지 않고, 추상화 (Interface)에 의존하는 것이 이상적이라고 했다. 하지만

MemberService memberService = new MemberServiceImpl();

여기 부분에서, MemberService까지는 괜찮았지만, 결국 MemberServiceImpl이라는 구현체에 의존한 코드가 되었다.
결국 둘다 의존하는 중이다. -> DIP 위반

profile
기록하고, 공유합시다

0개의 댓글