테스트는 []다프로그래밍/스프링2024. 6. 29. 16:31
Table of Contents
728x90
728x90
테스트는 문서다
테스트는 문서다
- 프로덕션 기능을 설명하는 테스트 코드 문서
- 다양한 테스트 케이스를 통해 프로덕션 코드 이해하도록 도와줌
- 한 사람의 경험을 팀 차원으로 모두 공유 가능
우리는 항상 팀으로 일하기 때문에 좋은 테스트 코드를 문서로 작성해야한다
DisplayName을 섬세하게
@DisplayName("음료 1개 추가하면 주문 목록에 담긴다") // 테스트명을 적어준다
@Test
void add(){
CafeKiosk cafeKiosk = new CafeKiosk();
cafeKiosk.add(new Americano());
assertThat(cafeKiosk.getBeverages().get(0).getName()).isEqualTo("Americano");
assertThat(cafeKiosk.getBeverages()).hasSize(1);
}
명사의 나열보다는 문장으로 작성하자!
ex_ A이면 B이다
테스트 행위에 대한 결과까지 기술하기
ex_ 음료를 1개 추가하면 주문 목록에 담긴다
도메인 용어를 사용하여 한층 추상화된 내용을 담자
ex_ 특정 시간이전 -> 영업 시작 시간 이전 : 더 도메인에 맞는 내용을 사용하자
테스트 현상을 중점으로 기술하지 말자
ex_ 주문을 생성하면 실패한다 -> 주문을 생성할 수 없다
BDD 스타일
BDD 스타일
- TDD에서 파생된 개발 방법
- 함수 단위 보다는 시나리오 기반한 테스트 케이스 자체 집중하여 테스트
- 개발자 이외의 일반 사람이 봐도 이해할 정도의 추상화 수준을 권장
Given/ When/ Then
1) Given: 시나리오 진행에 필요한 모든 준비 과정 ( 객체 , 값, 상태 )
2) When: 시나리오 행동 진행
3) Then: 시나리오 진행에 대한 결과 명시 ,검증
어떤 환경에서 어떤 행동을 진행할 때 어떤 상태가 일어난다
-> DisplayName에 명확히 작성 가능
@DisplayName("주문 목록에 담긴 상품들의 총 금액을 계산할 수 있다.")
@Test
void calculateTotalPrice(){
//given
CafeKiosk cafeKiosk = new CafeKiosk();
Americano americano = new Americano();
Latte latte = new Latte();
cafeKiosk.add(americano);
cafeKiosk.add(latte);
// when : 보통 when은 한 줄인 경우가 많다
int totalPrice = cafeKiosk.calculateTotalPrice();
// then
assertThat(totalPrice).isEqualTo(8500);
}
참고
728x90
728x90
'프로그래밍 > 스프링' 카테고리의 다른 글
Test Driven Development (0) | 2024.06.25 |
---|---|
단위 테스트 (0) | 2024.06.25 |
테스트는 왜 필요한가? (0) | 2024.06.24 |
테이블 변경 시 수정해야할 것들 (0) | 2024.03.01 |
단위테스트와 Mockito (0) | 2024.02.18 |
@스루나루 :: 스루나루
하고 싶은 걸 하고 되고 싶은 사람이 되자!
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!