Gradle을 통한 테스트 실패(Execution failed for task ':test'.)

Kim jisu·2025년 2월 10일
0

 Debugging Note

목록 보기
12/37

1. 문제 증상

  • 현상:
    • Gradle을 통한 ./gradlew test --info 실행 시 테스트는 성공했으나, 클래스(예: main 클래스)를 직접 실행하면 실패함.
    • IntelliJ에서 Gradle을 이용한 테스트 실행은 문제 없이 동작함.
      > Task :test FAILED
      FAILURE: Build failed with an exception.
      What went wrong:
      Execution failed for task ':test'.
      > There were failing tests. See the report at: file:///C:/Users/xxx/%EB%B0%94%ED%83%95%20%ED%99%94%EB%A9%B4/develop_study/junit5-practice/build/reports/tests/test/index.html
      Try:
      > Run with --scan to get full insights.
      BUILD FAILED in 3s
  • 초기 의심
    • JVM 옵션, 인코딩 문제, working directory 차이 등 Gradle 실행과 IDE 실행 간 환경 차이 가능성.

2. 원인 조사 과정

  • 빌드 로그 확인:

    • Gradle 빌드 로그에서 -Dfile.encoding=UTF-8 옵션이 제대로 적용되었음을 확인.
    • Gradle 데몬 재시작(./gradlew --stop) 및 재실행을 통해 JVM 옵션이 변경되었는지 점검.
  • 경로 및 인코딩 검토:

    • 프로젝트가 위치한 경로를 확인함:
      C:\Users\jisu0\바탕 화면\develop_study\junit5-practice
      → 한글(비 ASCII) 문자가 포함되어 있음.
    • Gradle이나 JVM이 경로 인코딩 문제로 파일 또는 리소스를 제대로 찾지 못할 가능성이 높다고 판단.
  • 테스트와 클래스 직접 실행 환경 차이 검토:

    • Gradle의 test 태스크는 별도의 working directory 및 JVM 옵션을 적용하여 테스트를 실행하는 반면,
      직접 실행 시에는 IDE나 커맨드라인의 기본 설정(예: 인코딩, working directory 등)을 따름.
    • 클래스 실행 시 한글이 포함된 경로로 인해 인코딩/경로 문제 발생 가능성이 존재.

3. 해결 노력

  • JVM 인코딩 옵션 강제 설정:

    • gradle.propertiesorg.gradle.jvmargs=-Dfile.encoding=UTF-8 추가하여 Gradle 실행 시 인코딩 일관성 확보.
    • build.gradle의 test 태스크에도 systemProperty 'file.encoding', 'UTF-8'을 추가.
  • Gradle 데몬 재시작:

    • 이전 옵션이 반영된 데몬이 남아 있을 수 있으므로 ./gradlew --stop 명령어로 데몬을 모두 종료 후 재시작.
  • 작업 디렉토리 및 리소스 로딩 방식 점검:

    • 코드 내에서 상대 경로를 사용하는 경우, 실행 환경에 따라 경로가 달라질 수 있음을 확인.
    • 클래스패스 리소스로 파일을 읽는 방식으로 변경하는 것도 고려.

4. 최종 해결 방안

  • 문제 원인:
    최종 원인은 프로젝트 경로에 한글(비 ASCII)이 포함되어 있어서, Gradle이 직접 클래스 실행 시 파일 경로나 리소스 로딩에 문제가 발생했던 것이었습니다.

  • 해결 방법:

    • 프로젝트 경로 변경:
      한글이나 특수 문자가 포함되지 않은 경로로 프로젝트를 이동시킴.
      예:
      기존: C:\Users\jisu0\바탕 화면\develop_study\junit5-practice
      변경: C:\develop_study\junit5-practice

    • 검증:
      경로를 영어만 사용하는 위치로 변경한 후 Gradle을 통한 ./gradlew test 실행 시 정상적으로 테스트가 통과됨.
      → 클래스 직접 실행 역시 동일한 경로에서 문제 없이 동작함.


5. 결론

  • 문제 포착:
    Gradle의 테스트 실행과 클래스 직접 실행 간 환경 차이를 확인한 후, 최종적으로 경로에 한글 포함 여부가 문제임을 파악함.

  • 해결 노력:
    JVM 옵션, 인코딩 설정, Gradle 데몬 재시작 등 다양한 방법을 시도함.

  • 최종 해결:
    프로젝트 경로를 영어(ASCII)만 포함된 경로로 변경하여 문제를 해결함.

이와 같이 경로에 한글이 포함된 것이 문제의 원인이었으며, 전체 경로를 영어로 변경함으로써 Gradle 테스트와 클래스 직접 실행 모두 성공적으로 동작하게 되었습니다.

profile
Dreamer

0개의 댓글