MemberApp 클래스 생성
- MemberService의 join 기능이 정상 작동하는지 확인
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);
System.out.println("findMember = " + findMember);
}
}
- 출력
- new member = memberA
- find Member = memberA
- 해당 코드는 스프링 관련 코드가 없음. 순수 자바로 개발
- 하지만 일일이 눈으로 테스트 하는 것은 좋은 방법이 아님
- ⇒ junit이라는 테스트 프레임워크 사용
- 빌드 될 때 test에 대한 코드는 운영환경에 배포가 되지 않음
MemberServiceTest
- 테스트 코드 작성
- given - when - then으로 나누어 테스트 코드 작성
package hello.core; import hello.core.member.Grade; import hello.core.member.Member; import hello.core.member.MemberService; import hello.core.member.MemberServiceImpl; 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); } }
- Assertions는 org.assertj.core.api.Assertions를 사용
- join한 멤버와 findMember의 리턴 값이 같은지 확인하는 코드
- 테스트가 실패하면 확실하게 표시가 되기 때문에 훨씬 테스트가 용이함
- 테스트 코드는 선택이 아닌 필수
회원 도메인 설계의 문제점
- 의존관계가 인터페이스 뿐만 아니라 구현까지 의존함(MemberServiceImpl)
- 추상화에도 의존하고 구체화에도 의존함
- DIP 위반 → 변경이 있을 때 문제가 됨
※ 본 게시글은 인프런의 스프링 핵심 원리 - 기본편(김영한)을 수강하고 정리한 내용입니다.
'Study > Spring' 카테고리의 다른 글
[스프링 핵심 원리 - 기본편] 스프링 핵심 원리 이해1 - 예제 만들기(주문과 할인 도메인 개발) (0) | 2022.12.04 |
---|---|
[스프링 핵심 원리 - 기본편] 스프링 핵심 원리 이해1 - 예제 만들기(주문과 할인 도메인 설계) (0) | 2022.12.03 |
[스프링 핵심 원리 - 기본편] 스프링 핵심 원리 이해1 - 예제 만들기(회원 도메인 개발) (0) | 2022.11.26 |
[스프링 핵심 원리 - 기본편] 스프링 핵심 원리 이해1 - 예제 만들기(회원 도메인 설계) (0) | 2022.11.25 |
[스프링 핵심 원리 - 기본편] 스프링 핵심 원리 이해1 - 예제 만들기(비즈니스 요구사항과 설계) (0) | 2022.11.24 |