[워밍업 클럽 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 등을 활용한다.

 

댓글을 작성해보세요.


채널톡 아이콘