테스트 컨벤션 정리
09.26(화) ~ 09.27(수)
테스트 컨벤션 재정의
RestDocs andDo 별도의 메서드로 분리
- 해당 클래스 가장 하단의 메서드를 만들어 andDo를 분리한다.
- 메서드명 : 문서화_{문서화할 컨트롤러 메서드}
테스트 픽스처
- 공통
- 변수명 네이밍
- 여러개의 동일 타입의 변수를 생성해야 하는 경우 숫자로 구분한다.
- 클래스 네이밍
- 테스트 클래스 명(-Test) + Fixture
- 필드 네이밍
- 한글로 작성
- 픽스처임을 알림
- 어떤 의미인지 명확하게 하기 위해
- 픽스처 클래스에서 픽스처 필드의 접근지정자는 protected, 픽스처가 아닌 필드의 접근 지정자는 private
- 모든 필드는 final을 붙이지 않는다
- [제이미] private도..? 결정되면 수정해두도록 하겠습니다.
- 해당 테스트의 패키지에 픽스처 패키지 생성하기
- 테스트 형식 별
- 통합 테스트
- 각 테스트 별로 클래스로 분리
- 파라미터 DTO와 응답 DTO을 모두 Fixture로 생성
- then절에서 Fixture로 만든 응답 DTO를 결과(actual)과 isEqualTo()로 검증
- 단위 테스트
- 컨트롤러 슬라이스 테스트
- 각 테스트 별로 클래스로 분리
- 픽스처가 적은 테스트라고 할지라도 별도의 클래스에서 픽스처 관리
- given절의 모든 객체를 픽스처로 처리
- mocking 과정(BDDMockito.given() 등등)은 given절에 유지
- mocking 과정 중 발생하는 예외도 given절에 유지
- 예외 발생 시 willThrow() 등의 메서드 내부에서 new 키워드로 생성
- 예외 객체는 별도의 필드로 분리하지 않음
- 예외 메세지 테스트 검증 시 exists() 사용
- 테스트 코드 중 문서화는 별도의 private 메서드로 분리하고 맨 밑으로 메서드 정렬
- 레포지토리 테스트
- 각 테스트 별로 클래스로 분리
- 픽스처가 적은 테스트라고 할지라도 별도의 클래스에서 픽스처 관리
- 저장 테스트 시
- save()의 반환값과 픽스쳐를 isEqualTo()로 비교
- 조회 테스트 시
- 단일조회 시 Optional 반환값과 픽스쳐를 contains()로 비교
- 목록조회 시 컬렉션의 크기 비교 + 인덱스끼리의 isEqualTo()로 비교
- 도메인 테스트
- repository 사용하지 않음
ReflectionTestUtils.setField()
사용해서 id 세팅
- 테스트하려는 도메인 객체 외에는 모두 픽스처 생성
각자 수정 필요
추석맞이 테스트 리팩토링 도메인 정하기
- auction
- authentication
- category