본문으로 건너뛰기
버전: Minecraft 26.2

테스트 실행

Gradle로 실행​

모드 프로젝트에서 gameTests 작업으로 실행합니다. -PpolyTests로 실행할 테스트를 고릅니다.

.\gradlew.bat gameTests "-PpolyTests=ruby_mod:*" # 모드의 모든 테스트
.\gradlew.bat gameTests "-PpolyTests=ruby_mod:ruby_block_drops" # 테스트 하나
  • 게임 테스트 서버에서 실행하므로 창이 뜨지 않습니다.
  • 콘솔에 All N required tests passed가 출력되고, 실패하면 실패한 테스트와 위치·메시지가 출력됩니다.
  • 실패하면 Gradle 작업도 실패하므로 CI에 그대로 쓸 수 있습니다.

게임 안에서 실행​

일반 월드에서도 /test 명령으로 실행할 수 있습니다. Poly 모드 로더의 생성 팩이 테스트 구조물을 담고 있고 알려진 팩으로 등록되기 때문입니다.

/test run ruby_mod:ruby_block_drops
/test runmultiple ruby_mod:*

다른 확인 작업​

작업하는 일
worldCreateSaveTest모드를 로드해 월드를 만들고 저장, 로그 줄 확인(창 없음). 로그 확인 테스트
clientWorldReloadTestworldCreateSaveTest가 저장한 월드를 클라이언트에서 다시 열기(창이 열림)
serverBootSmokeTest전용 서버를 EULA 확인 단계까지 부팅

클라이언트 화면·그리기처럼 게임 테스트 서버에서 확인할 수 없는 부분은 runClient로 직접 확인합니다.

모드 플러그인의 작업 전체​

모드 플러그인 dev.polymodloader.mod가 모드 프로젝트에 추가하는 작업입니다. 실행 디렉터리는 모드 프로젝트 기준입니다.

작업하는 일실행 디렉터리창
validatePolyModJsonsrc/main/resources/poly.mod.json을 Poly 모드 로더의 메타데이터 검사기로 검증. check(build)에 포함——
prepareMinecraftClientMinecraft 클라이언트, 라이브러리, 에셋을 받아 해시로 검증캐시 ~/.gradle/caches/poly-minecraft—
prepareMinecraftServer전용 서버를 받아 검증하고 번들을 풂캐시 ~/.gradle/caches/poly-minecraft—
runClientPoly 모드 로더를 거쳐 클라이언트 실행run/client뜸
runServerPoly 모드 로더를 거쳐 전용 서버 실행. EULA 동의 필요run/server없음
serverBootSmokeTest전용 서버를 EULA 확인 단계까지 부팅build/poly/server-boot-smoke없음
worldCreateSaveTest게임 테스트 서버에서 월드 생성, 내장 테스트 minecraft:always_pass 실행, 저장 확인build/poly/world-create-save없음
gameTests모드의 게임 내 테스트 실행. -PpolyTests=<선택자>로 고름build/poly/game-tests없음
clientWorldReloadTestworldCreateSaveTest가 저장한 월드를 클라이언트로 다시 열기. worldCreateSaveTest를 먼저 실행build/poly/client-world-reload잠깐 뜸
startupBenchmark게임 테스트 서버의 시작부터 종료까지 시간을 바닐라와 Poly 모드 로더로 번갈아 측정. 결과는 startup-benchmark.jsonbuild/poly/startup-benchmark없음
  • run*·prepare* 작업은 poly minecraft 그룹, 확인 작업은 verification 그룹에 있습니다.
  • build/poly/ 아래 디렉터리는 실행할 때마다 지우고 새로 만듭니다. 이전 실행의 월드나 설정이 남지 않습니다.
  • 모든 실행은 변환 캐시 build/poly/transform-cache를 공유합니다.
  • 모드 프로젝트의 jar는 mods/에 복사하지 않고 Poly 모드 로더에 바로 넘깁니다. runClient·runServer는 실행 디렉터리의 mods/(run/client/mods, run/server/mods)에 직접 넣은 jar도 함께 로드합니다.

실행할 Minecraft 버전 고르기​

실행과 확인은 한 번에 한 Minecraft 버전으로 합니다. 고르지 않으면 쓰고 있는 Poly 모드 로더의 기본 버전(지금은 26.2)을 씁니다.

gradle.properties
polyMinecraft=26.2

한 번만 다른 버전으로 실행하려면 명령에 -PpolyMinecraft를 붙입니다.

.\gradlew.bat gameTests "-PpolyMinecraft=26.2" "-PpolyTests=ruby_mod:*"
  • 실행에 쓰는 버전 어댑터와 Java 툴체인이 고른 버전을 따릅니다.
  • Poly 모드 로더가 지원하지 않는 버전을 고르면 지원 버전 목록을 보여 주고 실패합니다.
  • 모드가 어느 버전에서 실행되는지는 이 값이 아니라 poly.mod.json의 minecraft 목록이 정합니다. poly.mod.json을 보세요.

전용 서버 실행​

.\gradlew.bat runServer
  • runServer는 run/server에서 전용 서버를 실행합니다.
  • 전용 서버는 Minecraft EULA 동의가 필요합니다. Poly 모드 로더는 사용자를 대신해 동의하지 않습니다. run/server/eula.txt에 eula=true가 없으면 작업은 게임을 시작하기 전에 안내 메시지와 함께 실패합니다.
  • EULA를 직접 읽어 보고 동의한다면 run/server/eula.txt에 eula=true를 직접 적으세요.
  • serverBootSmokeTest는 EULA 확인이 필요 없습니다. 매번 빈 디렉터리에서 시작하므로 서버가 EULA 확인 단계에서 멈추고, 작업은 거기까지의 로그만 확인합니다.
Buy me a coffee