JAVA · 테스트
BDD 스타일 테스트 (given/when/then)
BDD 스타일로 테스트를 작성하여 가독성과 의도를 명확히 합니다.
테스트중급BDDgiven-when-thenBDDMockito행위검증
핵심 설명
BDD 스타일로 테스트를 작성하여 가독성과 의도를 명확히 합니다.
Java code
// BDD with Mockito (의사코드)
// import static org.mockito.BDDMockito.*;
// class OrderServiceBDDTest {
// OrderRepository repo = mock(OrderRepository.class);
// PaymentGateway payment = mock(PaymentGateway.class);
// OrderService service = new OrderService(repo, payment);
//
// @Test
// @DisplayName("유효한 주문이면 결제 후 저장한다")
// void shouldProcessValidOrder() {
// // Given (준비)
// Order order = new Order("ORD-1", "노트북", 1500000);
// given(payment.charge(anyLong())).willReturn(true);
// given(repo.save(any(Order.class))).willReturn(order);
//
// // When (실행)
// Order result = service.placeOrder(order);
//
// // Then (검증)
// then(payment).should().charge(1500000L);
// then(repo).should().save(order);
// assertThat(result.getId()).isEqualTo("ORD-1");
// }
//
// @Test
// @DisplayName("결제 실패 시 주문을 저장하지 않는다")
// void shouldNotSaveWhenPaymentFails() {
// // Given
// given(payment.charge(anyLong())).willReturn(false);
//
// // When & Then
// assertThrows(PaymentException.class,
// () -> service.placeOrder(new Order("ORD-2", "키보드", 80000)));
// then(repo).should(never()).save(any());
// }
// }
class Main {
public static void main(String[] args) {
System.out.println("BDD Mockito: given() -> when(실행) -> then().should()");
System.out.println("일반 Mockito: when() -> 실행 -> verify()");
}
}학습 팁
BDD 스타일(given/when/then)은 비개발자도 테스트 의도를 이해할 수 있습니다. BDDMockito를 사용하면 코드와 용어가 일치합니다.
주의할 점
given()과 when()을 혼용하면 가독성이 떨어집니다. 프로젝트에서 하나의 스타일을 통일하세요.
자주 묻는 질문
BDD 스타일 테스트 (given/when/then)란 무엇인가요?
BDD 스타일로 테스트를 작성하여 가독성과 의도를 명확히 합니다.
BDD 스타일 테스트 (given/when/then) 학습 시 주의할 점은 무엇인가요?
given() 과 when() 을 혼용하면 가독성이 떨어집니다. 프로젝트에서 하나의 스타일을 통일하세요.
Continue Learning
Java 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.