일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 자바
- effectivejava
- kubernetes
- 자바스크립트
- 이펙티브자바
- 티스토리챌린지
- 알고리즘정렬
- 알고리즘
- 예제로 배우는 스프링 입문
- 스프링 핵심원리
- 스프링부트
- 카카오
- java
- 이차전지관련주
- Sort
- Spring
- 스프링핵심원리
- 이펙티브 자바
- ElasticSearch
- 코딩테스트
- 김영한
- Effective Java
- 스프링
- 엘라스틱서치
- 클린아키텍처
- 카카오 면접
- Effective Java 3
- 오블완
- k8s
- JavaScript
- Today
- Total
Kim-Baek 개발자 이야기
[스프링 핵심원리] 10. 회원 도메인 실행과 테스트 본문
김영한님의 [스프링 핵심 원리] 강의를 정리하고, 내가 생각한 내용까지 정리하는 포스팅
지난번에 만든 회원도메인에 대해서 실행을 해보고 테스트를 해볼 수 있도록 하자.
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
'개발 > Spring' 카테고리의 다른 글
[스프링 핵심원리] 12. 주문과 할인 도메인 개발 (0) | 2021.10.01 |
---|---|
[스프링 핵심원리] 11. 주문과 할인 도메인 설계 (0) | 2021.10.01 |
[스프링 핵심원리] 9. 회원 도메인 개발 (0) | 2021.09.29 |
[스프링 핵심원리] 8. 회원 도메인 설계 (0) | 2021.09.28 |
[스프링 핵심원리] 7. 비즈니스 요구사항과 설계 (0) | 2021.09.28 |