패키지
패키지 구조
- 세부 구조는
도메인 형 vs 레이어 형 으로 결정
계층 표현
- 표현 계층 - presentation
- 응용 계층 - application
- 도메인 계층 - domain
- 인프라 계층 - infrastructure
코드
클래스 구성 순서
- 상수
- 필드
- 생성자(기본 생성자, 주 생성자, 빌더 패턴 사용)
- static method(dto 외 지양)
- public method
- public override method
- private method
- object override
어노테이션 순서
- 객체가 의도한 대로 동작하기 위해 필요한 중요 어노테이션 순서로 작성한다.
코드 컨벤션
클래스 예시 코드
테스트
테스트 컨벤션
@DisplayName
대신 메서드 명을 한글로 작성한다.
data.sql
대신 TestFixture
를 구성한다.
테스트 범위
Acceptance
- acceptance : 실제 port 띄움, cucumber 도입 전 까지는 성공 시나리오만 테스트
Controller
- documentation : 슬라이싱(@WebMvcTest), 성공 테스트
- presentation : 슬라이싱(@WebMvcTest), 핸들러 매개변수에 대한 실패 케이스 검증
Service
- application : 통합 테스트(@SpringbootTest)
Domain
- domain : 단위 테스트, 의미있는 기능만 테스트
Repository
- repository : 슬라이싱 테스트(@DataJpaTest), 직접 인터페이스에 작성한 메서드에 대해서만 테스트
테스트 예시 코드