Presentation Layer 외부 세계의 요청을 가장 먼저 받는 계층 파라미터에 대한 최소한의 검증을 수행한다. Mock 가짜 MockMvc Mock(가짜) 객체를 사용해 스프링 MVC 동작을 재현할 수 있는 테스트 프레임워크 요구사항 추가 관리자 페이지에서 신규 상품을 등록할 수 있다. 상품명, 상품타입, 판매 상태, 가격 등을 입력받는다. // productNumber // 001 002 003 004 // DB 에서 마지막 저장된 Product의 상품 번호를 읽어와서 +1 // 009 -> 010 구현코드 https://github.com/beginner0107/cafekiosk/commit/4e32f9b28d8b430fc82501c6c6bf96d65216df92 Presentation Lay..
Practical Testing: 실용적인 테스트 가이드
요구사항 추가 주문 생성 시 재고 확인 및 개수 차감 후 생성하기 재고는 상품번호를 가진다. 재고와 관련 있는 상품 타입은 병 음료, 베이커리이다. 구현코드 https://github.com/beginner0107/cafekiosk/commit/b905364759754c114e9ac8923ba3d6505b7bc79b Business Layer 테스트(3) GREEN · beginner0107/cafekiosk@b905364 beginner0107 committed Dec 17, 2023 github.com https://github.com/beginner0107/cafekiosk/commit/df44d4f82dab4b459d78d63e768e236870690bf1 Business Layer 테스트(3) ..
Persistence Layer Data Access의 역할 비즈니스 가공 로직이 포함되어서는 안 된다. Data에 대한 CRUD에만 집중한 레이어 Business Layer 비즈니스 로직을 구현하는 역할 Persistence Layer와의 상호작용(Data를 읽고 쓰는 행위)을 통해 비즈니스 로직을 전개시킨다. 트랜잭션을 보장해야 한다. 요구사항 상품 번호 리스트를 받아 주문 생성하기 주문은 주문 상태, 주문 등록 시간을 가진다. 주문의 총 금액을 계산할 수 있어야 한다. Order Entity @Entity @Getter @Table(name = "Orders") public class Order extends BaseEntity { @Id @GeneratedValue(strategy = IDENTI..
요구사항 키오스크 주문을 위한 상품 후보 리스트 조회하기 상품의 판매 상태: 판매중, 판매보류, 판매중시 판매중, 판매보류인 상태의 상품을 화면에 보여준다. id, 상품 번호, 상품 타입, 판매 상태, 상품 이름, 가격 엔티티 설계 @Entity @NoArgsConstructor(access = PROTECTED) @Getter public class Product { @Id @GeneratedValue(strategy = IDENTITY) private Long id; private String productNumber; @Enumerated(STRING) private ProductType type; @Enumerated(STRING) private ProductSellingStatus selling..
Layered Architecture 관심사의 분리! 책임을 나누고 유지보수하기 쉽게 만들어보자. 해서 시작한 것 A + B = AB? BA? C? 설명: A모듈과 B모듈이 결합하면서 어떤 결과가 나올지 모른다. 통합테스트(Integration test)가 필요하다. 통합테스트(Integration test) 여러 모듈이 협력하는 기능을 통합적으로 검증하는 테스트 일반적으로 작은 범위의 단위 테스트만으로는 기능 전체의 신뢰성을 보장할 수 없다. 풍부한 단위 테스트 & 큰 기능 단위를 검증하는 통합 테스트
BDD 롤프로게이머 BDD 는.. 아니다. TDD에서 파생된 개발방법 함수 단위의 테스트에 집중하기보다, 시나리오에 기반한 테스트케이스(TC) 자체에 집중하여 테스트한다. 개발자가 아닌 사람이 봐도 이해할 수 있을 정도의 추상화 수준(레벨)을 권장 GIVEN / WHEN / THEN Given: 시나리오 진행에 필요한 모든 준비 과정 (객체, 값, 상태 등) When: 시나리오 행동 진행 Then: 시나리오 진행에 대한 결과 명시, 검증 어떤 환경에서(Given) 어떤 행동을 진행했을 때(When) 어떤 상태 변화가 일어안다(Then) -> DisplayName에 명확하게 작성할 수 있다. given / when / then을 주석으로 달아주었다.! @DisplayName("주문 목록에 담긴 상품들의 총..