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