
Day16레이어드 아키텍처와 레이어별 테스트 작성법
레이어드 아키텍처와 테스트
-Persistence Layer
-Business Layer
-Presentation Layer
=>3가지가 레이어드 아키텍처의 구조
통합테스트
풍부한 단위 테스트 & 큰 기능 단위를 검증하는 통합테스트가 있다
Spring & JPA를 배우면서 기본 엔티티 설계 있어서
JPA(Java Persistence API)로 ORM(Object-Relational Mapping)기술 표준임
Persistence Layer
Persistence Layer는 영속성을 걸어주는 Layer라고 볼수 있다
Order 에 @Entity, @Table, @OnetoMany 처럼 관련 persistence entity로 종속관계를 걸어주는게 Persistence Layer에서 하는 역할이다
Test
given, when, then으로 정리를 해주는게 좋다
test를 한다면 기본적으로 Order 상태나 Product 상태를 생각해볼수 있다
@ActiveProfiles("test") @SpringBootTest 또는 @DataJpaTest를 사용하며 쓸수 있다
Business Layer
Service에서 진행하는 레이어이다
Service는 @Repository에 저장하는 형태의 특성을 가진다
@Transactional 을 걸어주고 비즈니에서 핵심로직 역할을 한다.
@Service를 위에다 넣어주고 필요한 Repository를 필드로 넣어준다
Test
ServiceTest관련 작성해주면 된다
@AutoProfile,@SpringBoot @AfterEach @Autowired를 걸어서 사용할수 있다.
@Autowired로 관련Repository를박고 OrderService로 일어날수 있는 여러가지 테스트를 생각해볼수 있다
ex) Order가 들어오면 제품 재고는 있나? Order는 확인한 사항이 중복되지않나? 관련 필요성을 Test로 만들어볼수 있다
@DisplayName("중복되는 상품번호 리스트로 주문을 생성할 수 있다.")
@Test
void createOrderWithDuplicateProductNumbers() {
Presentation Layer
관리자가 관리하는 Layer라고 보면 된다
내용이 워낙많아서 다 소화하지 못했습니다. 추후 소화하는대로 다시 정리하겠습니다.
참고사항
-Practical Testing-박우빈코치님
-모나코AI
댓글을 작성해보세요.