[워밍업 클럽 3기 BE code] 미션 day 16
Q.
"Layered Architecture 구조의 레이어별 테스트 작성법을 알아보았습니다.
레이어별로 1) 어떤 특징이 있고, 2) 어떻게 테스트를 하면 좋을지, 자기만의 언어로 다시 한번 정리해 볼까요?"
A.
Layered Architecture
- 레이어 별 관심사를 분리하여 코드의 결합도를 낮추고 유지보수성을 높히는 방식.
Persistence layer
- 특징
- DB와 통신하는 역할을 수행한다.
- 비즈니스 로직에 대한 코드가 아닌 단순 데이터의 입출입을 담당한다.
- 테스트
- JpaRepository 중 비즈니스 로직에서 사용하는 메서드는 테스트를 수행하여 향후 변경에 대응한다.
- H2 등 테스트를 위한 DB를 활용하여 @SpringDataJpa를 사용한 통합 테스트를 수행한다.
Business layer
- 특징
- 비즈니스 로직을 수행한다.
- 비즈니스 로직에 따른 세세한 파라미터 검증을 수행한다.
- 조회용 로직은 CQRS로 코드를 작성하고 @Transactional(readonly=true)로 처리하자.
- 필요에 따라 락을 사용해야할 수도 있다.
- 테스트
- @DataJpaTest은 @Transactional이 포함됨을 고려하여 테스트를 수행해야 한다. 기본적으로는 @SpringBootTest을 사용하여 테스트 한다.
Presentation layer
- 특징
- 클라이언트가 소통하는 레이어.
- 최소한의 파라미터 검증을 수행한다.
- 테스트
- @WebMvcTest을 활용하여 클라이언트의 요청에 대한 대역을 사용할 수 있다.
- 대역 없이 통합 테스트를 수행하기에는 범위가 넓어, 서비스 레이어에 대하여 대역을 고려하여 처리할 수 있다. 이 경우 @MockBean 등을 활용한다.
댓글을 작성해보세요.