티스토리 뷰
728x90
테스트의 범위
- ServiceImpl과 Domain을 중점으로 공부할 예정임.
- Controller와 RepositoryImpl은 아주 적게 다룰 것임.
- 이유가 Controller는 요청을 받고 응답할 뿐이기 때문에 스프링에서 아주 잘 만들어 놨을 것이기 때문임.
- Repository에서도 마찬가지로 이미 JPA에서 잘 만들어 놨기 때문에 다룰 이유가 없다고 생각 됨.
낮은 커버리지 걱정
- 걱정 : JPA 와 Spring 쪽 테스트를 안 하게 되면 커버리지가 너무 낮게 나옴.
- 도메인 : 도메인이 그만큼 빈약하다는 의미
- 경쟁력 : 서비스의 경쟁력을 의심해봐야 함.
실기 전 추가 사항 및 추가 내용
- JPA, Http 통신 등 외부 내용들은 의존성 역전 원리를 적용해 다룰 예정임.
- ServiceImpl -> Repository <- RepositoryImpl
- ServiceImpl -> Network <- NetworkImpl
- 1부에선 필요할 경우 mock으로(Fake 구현체) 치환하여 테스트를 진행
- 2부에선 Mockito나 H2 없이 테스트를 진행
- 이전에 mock을 사용하거나 H2를 사용해서 중형 테스트로 진행했던 부분들을 소형 테스트로 변경할 수 있게 됨.
패키지 구조 리팩토링
- 현재 layer로 분류
- 장점
- 구조가 단순하고 처음 사용하기 편함
- 단점
- 도메인이 눈에 보이지 않음
- 동시 작업이 떨어짐
- 사실상 경계, 의존성을 관리하지 않겠다는 것임
- domain/layer로 분류
- 장점
- 어떤 도메인을 다루는 시스템인지 눈에 보임
- 필요에 따라 MSA 시스템 확장이 가능
- 단점
- MVC에 익숙할 경우 컴포넌트 찾기가 어색할 수 있음
한 눈에 보는 변경 사항
1. 기존
2. 변경
- repository -> infrastructure 로 네이밍 변경
- 외부 연동을 구현하는 구현체가 repository 패키지에 들어가기 애매하기 때문!
3. 의존성 역전
4. 순환 참조에 주의!
- 순환 참조는 피해야하는 해악임 주의할 것!
5. JPA 엔티티와 도메인 모델을 분리
6. setter를 없애고 domain/vo로 로직 이동
- 서비스에 존재하는 로직을 도메인 엔티티 쪽으로 몰아넣을 것임
- 도메인을 테스트할 것임
- 테스트가 쉬워짐
7. CQRS (Command and Query Responsibility Segregation)
- 명령과 질의를 철저히 분리시킴
명령
- 상태를 바꾸는 메소드!
- 명령 메소드는 void 타입이어야 함
- 명령 메소드는 return this를 해선 안됨
질의
- 상태를 물어보는 메소드
- 질의 메소드는 상태를 변경해서는 안됨
728x90
'개발 > Spring' 카테고리의 다른 글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 스터디
- 해커톤
- 인프런
- spring boot
- 16기
- 글또
- 육.지.행
- 연합 동아리
- 후기
- 백엔드
- 디프만
- 6팀
- 파이썬
- server
- 리빙랩
- 중간발표
- 15기
- 글로컬
- 프로그래머스
- tdd
- 회고
- 서버
- AWS
- 1주차
- 알고리즘
- 10기
- python
- it 동아리
- test
- 육지행
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함