본문으로 이동
테스트 의존성 관리로 높은 품질의 테스트 코드 유지하기
문서

테스트 의존성 관리로 높은 품질의 테스트 코드 유지하기

양권성 · 토스 · 토스 기술 블로그

원본 보기

소개

혹시 테스트 코드에서도 의존성을 관리해본 적이 있으실까요? 해당 포스트에서는 Gradle의 java-test-fixtures 플러그인을 사용하여 테스트 의존성 관리를 통해 높은 품질의 테스트 코드를 유지하는 방법을 알아봅니다.

AI 핵심 요약

멀티 모듈 프로젝트에서 테스트용 Builder와 Helper를 공유하려면 코드를 복사하거나 별도 모듈에 모아야 해 중복과 응집도 저하가 생길 수 있습니다. 글은 Gradle의 `java-test-fixtures` 플러그인을 적용해 테스트 전용 클래스를 `testFixtures` 소스셋에 두고, `testImplementation(testFixtures(project(...)))`로 다른 모듈의 테스트에 제공하는 방법을 설명합니다. 또한 H2 같은 테스트 의존성은 `testFixturesRuntimeOnly`에 선언하고, 이를 사용하는 모듈에서 `testRuntimeOnly(testFixtures(project(...)))`로 연결하면 의존성을 해당 모듈에 직접 선언하지 않고도 테스트 런타임에 전달할 수 있습니다. 테스트 코드도 중복과 의존성 결합을 관리해야 하는 소프트웨어이며, Gradle의 구성별 클래스패스와 노출 범위를 이해하는 것이 중요하다는 점을 강조합니다.

  • 테스트에서만 필요한 Builder와 Helper는 프로덕션 소스와 분리해 `testFixtures`에 둡니다.
  • `testImplementation(testFixtures(project(":domain")))`로 다른 모듈의 테스트에서 fixture 클래스를 사용할 수 있습니다.
  • 테스트 fixture가 제공하는 의존성은 `testFixturesRuntimeOnly`처럼 fixture 전용 구성에 선언해야 외부 모듈에 전달할 수 있습니다.
  • Gradle 구성별로 의존성이 어느 클래스패스에 들어가고 외부 모듈에 노출되는지 확인하세요.