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를 잘 지키고 있을까요?
- 의존관계가 인터페이스 뿐만 아니라 구현까지 모두 의존하는 문제점이 있음
- 주문까지 만들고나서 문제점과 해결 방안을 설명
반응형