콘텐츠로 이동
Bluetape4k 문서1.11

테스트와 생태계 학습 경로

최신 안정판 Bluetape4k 1.11.0 릴리스 기준

전체 context보다 작은 경계를 먼저 검증한다

섹션 제목: “전체 context보다 작은 경계를 먼저 검증한다”

Spring helper라고 해서 모든 테스트에 @SpringBootTest가 필요한 것은 아닙니다. Annotation, BeanFactory, property, 오류 body, Observation helper는 작은 unit test로 계약을 확인할 수 있습니다. Bean wiring과 component scan이 핵심일 때만 application context를 띄웁니다.

Terminal window
./gradlew :bluetape4k-spring-boot-core:test --no-configuration-cache

모듈 전체 테스트는 최종 확인에 사용하고, 문서나 호출 코드를 바꿀 때는 관련 test class부터 실행합니다.

기능먼저 읽을 테스트확인하는 계약
annotation과 beanAnnotationExtensionsTest, BeanFactoryExtensionsTestmerged lookup, bean 부재·중복
propertyPropertyResolverExtensionsTestnullable, default, required conversion
RestClientRestClientExtensionsTest, RestClientCoroutinesDslTestmethod, headers, body, nullable, interrupt
WebFlux requestHttpRequestFilterTestReactor Context 전달과 context 부재
DataBufferDataBufferSupportTestread/write, byte limit, join, pooled release
오류 응답ApiExceptionHandlerTest예외별 status와 body
관측SpringObservationSupportTeststart/error/stop, cancellation, scope cleanup
WebClient resourceCustomWebClientConfigTest전용 resource와 bean wiring

HTTP client 테스트는 mock server나 test request factory를 사용해 method, body, converter와 cancellation을 검증합니다. 외부 인터넷 서비스에 의존하지 않습니다. WebClient resource test는 bean 생성만이 아니라 isUseGlobalResources=false, timeout과 connector wiring을 확인합니다.

DataBuffer 테스트에서는 default buffer와 Netty pooled buffer를 나눠 release 결과를 확인합니다. Observation 테스트는 exporter 없이 recording handler로 lifecycle과 key values를 검증합니다.

다음 기능은 이 모듈의 책임이 아닙니다.

  • application bootstrap과 auto-configuration discovery
  • embedded server와 WebFlux runtime
  • Jackson converter와 직렬화 정책
  • Actuator endpoint, Prometheus 또는 OpenTelemetry exporter
  • authentication, authorization, transaction
  • HTTP connection pool, retry, circuit breaker

테스트 fixture에서 Spring Boot가 이 기능을 제공한다고 해서 library가 제공하는 것으로 문서화하지 않습니다.

  • Coroutine과 Flow 자체의 cancellation, dispatcher, context 규칙은 bluetape4k-coroutines에서 익힙니다.
  • JDBC helper와 imperative transaction은 bluetape4k-jdbc로 이어갑니다.
  • Spring Data R2DBC entity operation을 Flow와 suspend로 쓰려면 bluetape4k-spring-boot-r2dbc를 봅니다.
  • Hibernate와 Exposed를 비교해야 한다면 JDBC 기반 persistence 요구와 transaction 모델을 먼저 정한 뒤 각 repository의 매뉴얼로 이동합니다.
  • Micrometer backend 세부 helper는 bluetape4k-micrometer, resilience policy는 bluetape4k-resilience4j가 담당합니다.
  1. Context helper 하나를 unit test와 함께 사용합니다.
  2. HTTP가 필요하면 blocking과 reactive client를 선택하고 timeout·converter 소유자를 정합니다.
  3. WebFlux 요청 context나 DataBuffer를 사용하면 subscription과 buffer 수명주기를 테스트합니다.
  4. 오류 응답에 외부 공개 message와 안정된 error code를 정의합니다.
  5. application-owned ObservationRegistry로 service 경계를 감싸고 cardinality를 점검합니다.
  6. 전용 executor나 event loop는 운영 격리가 실제로 필요할 때만 추가합니다.

Spring Boot 애플리케이션 공통 경계에서 전체 API 지도와 1.11.0 제한 사항을 다시 확인합니다.