피드로 돌아가기
I wrote a .NET assertion library to understand assertion libraries
Dev.toDev.to
Backend

Deterministic Output과 AI 전용 검증 기능을 갖춘 .NET Fluent Assertion 라이브러리 설계

I wrote a .NET assertion library to understand assertion libraries

spearzy2026년 5월 5일6intermediate

Context

기존 Assertion 라이브러리의 불분명한 failure message와 CI 환경의 noisy한 출력으로 인한 디버깅 효율 저하 발생. 일반적인 애플리케이션 검증 외에 Vector similarity, Retrieval 등 AI 특화 데이터 검증을 위한 전문적인 API 부재를 인지함.

Technical Solution

  • CI 환경 내 일관된 디버깅을 위한 Deterministic failure output 기반의 설계 제약 사항 적용
  • 불필요한 종속성 제거 및 최적화된 런타임을 위한 Core-Optional(JSON, HTTP, Vectors) 패키지 분리 구조 채택
  • 반복적인 수정-실행 사이클을 줄이기 위해 여러 검증 항목을 일괄 처리하는 Explicit batching API 구현
  • Vector similarity 검증을 위한 Dot Product, Cosine Similarity, Mean Reciprocal Rank(MRR) 전용 Assertion 로직 도입
  • 개발자 경험 향상을 위한 Fluent API 인터페이스 적용으로 가독성 높은 검증 코드 작성 지원

1. CI 환경의 디버깅 효율을 높이기 위해 failure output의 결정성(Determinism)을 설계 단계부터 고려할 것

2. 도메인 특화 검증(AI, Vector 등)이 필요한 경우 일반 Equality가 아닌 통계적 허용 오차(Tolerance) 기반의 API를 설계할 것

3. 라이브러리 설계 시 핵심 기능과 확장 기능을 패키지 단위로 분리하여 클라이언트의 의존성 오버헤드를 최소화할 것

4. Fail-fast 방식과 Batching 방식을 명시적으로 선택 가능하게 하여 테스트 시나리오별 최적의 피드백 루프를 구축할 것

원문 읽기