4주차 인수 테스트와 리팩터링
0. [이론] 배운 사항들
인수테스트 대상
해피케이스 통과 위주로 검증
사이드 케이스들은 유닛테스트에서 검증하는 것을 추천
점진적 리팩터링
명시적으로 중요한 테스트는 응답의 결과까지 검수 할 필요 있다.
더 효율적인 방법들은 무엇일까?
인수 테스트 통합
하나의 테스트에서 생성, 조회, 삭제를 검증한다. ('즐겨 찾기를 관리한다')
Story Test
흐름에 따라 검증하기
API 단위를 벗어나서 하나의 흐름을 단위로 설정
통합시 장점
테스트 비용 절감
인수 테스트 스텝 중복 제거
흐름 검증 및 사용자 스토리 검증 가능
레거시 리팩토링
구조 설계
새로운 테스트 만들기 (기존 프로덕션 + 테스트 같이가져가기)
기능 구현
1. [실습] 구현 단계들
1단계 - 경로 조회 타입 추가
2단계 - 요금 조회
3단계 - 요금 정책 추가
테스트를 통합하여 테스트의 유지보수 비용을 줄인다.
문서화를 ATDD 사이클에 도입한다.
2. [실습] 배운 사항
AsciiDoc 사용 원리 -> Gradle
테스트들 통합
정책같은 도메인 설계
3. [실습] 구현 사항들
1단계 - 경로 조회 타입 추가
경로 검색 기능 추가
소요 시간 추가
피드백 사항:
줄바꿈에 대한 이해가 부족해서 계속 이상한 줄바꿈이 나타남
delimiter의 법칙
쓰지 않는 변수
stream().count() → size()
findany vs findFirst
2단계 - 요금 조회
요금 계산 방법 추가
피드백 정리:
AssertAll
오류케이스 docs
Path에서 요금객체 리팩토링
Display test 값 수정
3단계 - 요금 정책 추가
요금 정책 추가
추가고민거리
간접 참조
객체각 결합도 낮아짐
서비스 레이어의 로직 복잡도 증가
비회원 기능 구현
Null Object 을 사용해서 구현
Annotation 을 사용해서 구현
Controller에서 분기처리 하지 않고 domain에서 비회원, 회원에 따라 할인 정책 적용
패키지 의존성
문서화 진행 방법
Last updated