DisplayName을 섬세하게 작성하자 예시코드: https://github.com/beginner0107/cafekiosk/commit/69d8e3ff2bc2fecaa2a59c8355c51eb597e6b55a 테스트 코드 섬세하게 달기 · beginner0107/cafekiosk@69d8e3f beginner0107 committed Dec 12, 2023 github.com 간단하게 적어준다(X) @DisplayName("음료 1개 추가 테스트") @Test void add() { CafeKiosk cafeKiosk = new CafeKiosk(); cafeKiosk.add(new Americano()); assertThat(cafeKiosk.getBeverages()).hasSize(1); ass..
Practical Testing: 실용적인 테스트 가이드
TDD 프로덕션 코드보다 테스트 코드를 먼저 작성하여 테스트가 구현 과정을 주도하도록 하는 방법론 이게 무슨 이야기일까... (대충 경험상 테스트 코드를 먼저 짠다는게 이해가 안 간다) RED, GREEN, REFACTOR RED 실패하는 테스트 작성 프로덕션 코드(구현부) 없이 테스트를 작성하기 때문에 당연히 실패하기 마련.. 먼저 실행해서 빨간불을 봐라 GREEN 초록불을 보기 위해서라면 구현이 엉터리여도 된다.(!??) 테스트 통과, 최소한의 코딩 REFACTOR 구현 코드 개선 테스트 통과 유지 코드 구현 https://github.com/beginner0107/cafekiosk GitHub - beginner0107/cafekiosk: 테스트코드 연습 일지 테스트코드 연습 일지. Contribu..
요구사항 가게 운영 시간(10:00 ~ 22:00) 외에는 주문을 생성할 수 없다. 테스트 하기 어려운 영역이란? 관측할 때마다 다른 값에 의존하는 코드 현재 날짜/시간, 랜덤 값, 전역 변수/함수, 사용자 입력 등 외부 세계에 영향을 주는 코드 표준 출력, 메세지 발송, 데이터베이스에 기록하기 등 "현재 가게 운영 시간 외에는 주문을 생성할 수 없다" 라는 요구사항은 현재 시간이 계속 변경되기 때문에 관측할 때마다 다른 값에 의존하는 코드라고 볼 수 있다. 테스트 하기 쉬운 영역이란? 순수함수(pure functions) 같은 입력에는 항상 같은 결과 외부 세상과 단절된 형태(DB) 테스트하기 쉬운 코드 구현코드 https://github.com/beginner0107/cafekiosk/commit/8..
요구사항 추가 한 종류의 음료 여러 잔을 한 번에 담는 기능 키오스크 생각해보면, 메뉴 하나를 선택한 다음에 수량을 입력해서 5잔이면, 그에 맞게 [수량 * 가격]으로 주문할 금액이 정해지게 된다. 테스트 케이스 세분화하기 해피 케이스 (요구사항 -> 개발자가 잘 이해한 경우) 예외 케이스 (요구사항 -> 암묵적 요구사항) 암묵적 요구사항이란? 아메리카노 0개 입력을 했을 때 어떻게 대처할 것인가? 숫자를 음수를 입력했을 때 어떻게 할 것인가? 상식적으로는 바로 떠올리기 쉽지 않지만, 충분히 일어날 수도 있는 상황 이런 케이스들을 다 막아야 꼼꼼한 테스트와 프로덕션 코드가 완성이 될 수 있음!! 경계값 테스트 (중요) 범위(이상, 이하, 초과, 미만), 구간, 날짜 등 구현코드 https://github..
단위 테스트란? 작은 코드 단위를 독립적으로 검증하는 테스트 작은 코드 단위란? 클래스, 메서드 검증 속도가 빠르고, 안정적이다. JUnit 5 라이브러리를 통해 검증 JUnit 5 단위 테스트를 위한 테스트 프레임워크 XUnit - Kent Beck -> (Sunit[Samlltalk], JUnit[Java], NUnit[.NET]), ... https://junit.org/junit5/docs/current/user-guide/ JUnit 5 User Guide Although the JUnit Jupiter programming model and extension model do not support JUnit 4 features such as Rules and Runners natively, it..
간단하게 예제로 Cafe Kiosk를 구현하면서 알아볼 예정 주문 목록에 음료 추가/삭제 기능 주문 목록 전체 지우기 주문 목록 총 금액 계산하기 주문 생성하기 구현 코드 https://github.com/beginner0107/cafekiosk/commit/f04dd3a5eb4ad38f5ae59d2994d0c7a7f691c61d Initial commit · beginner0107/cafekiosk@f04dd3a beginner0107 committed Dec 10, 2023 github.com 간단하게 설명하자면, [주문, 음료] 객체가 존재하고 이를 관리하는 [CafeKiosk] 객체가 존재한다 CafeKiosk(주문받고 금액 계산해주고, 주문 취소하고 등등 역할을 하는)를 테스트 하고자 한다. @..