![테스트는 []다](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSewVz%2FbtsIiUoyq3b%2FsQcD0e2y6eg9TBSROTMBk0%2Fimg.png)
테스트는 문서다
테스트는 문서다
- 프로덕션 기능을 설명하는 테스트 코드 문서
- 다양한 테스트 케이스를 통해 프로덕션 코드 이해하도록 도와줌
- 한 사람의 경험을 팀 차원으로 모두 공유 가능
우리는 항상 팀으로 일하기 때문에 좋은 테스트 코드를 문서로 작성해야한다
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);
}
참고
Practical Testing: 실용적인 테스트 가이드 강의 | 박우빈 - 인프런
박우빈 | 이 강의를 통해 실무에서 개발하는 방식 그대로, 깔끔하고 명료한 테스트 코드를 작성할 수 있게 됩니다. 테스트 코드가 왜 필요한지, 좋은 테스트 코드란 무엇인지 궁금하신 모든 분을
www.inflearn.com
'프로그래밍 > 스프링' 카테고리의 다른 글
Test Driven Development (0) | 2024.06.25 |
---|---|
단위 테스트 (0) | 2024.06.25 |
테스트는 왜 필요한가? (0) | 2024.06.24 |
테이블 변경 시 수정해야할 것들 (0) | 2024.03.01 |
단위테스트와 Mockito (0) | 2024.02.18 |
하고 싶은 걸 하고 되고 싶은 사람이 되자!
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!