테스트 실행
Gradle로 실행
모드 프로젝트에서 gameTests 작업으로 실행합니다. -PpolyTests로 실행할 테스트를 고릅니다.
- Windows (PowerShell)
- macOS · Linux (bash)
.\gradlew.bat gameTests "-PpolyTests=ruby_mod:*" # 모드의 모든 테스트
.\gradlew.bat gameTests "-PpolyTests=ruby_mod:ruby_block_drops" # 테스트 하나
./gradlew gameTests "-PpolyTests=ruby_mod:*" # 모드의 모든 테스트
./gradlew 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 | 모드를 로드해 월드를 만들고 저장, 로그 줄 확인(창 없음). 로그 확인 테스트 |
clientWorldReloadTest | worldCreateSaveTest가 저장한 월드를 클라이언트에서 다시 열기(창이 열림) |
serverBootSmokeTest | 전용 서버를 EULA 확인 단계까지 부팅 |
클라이언트 화면·그리기처럼 게임 테스트 서버에서 확인할 수 없는 부분은 runClient로 직접 확인합니다.
모드 플러그인의 작업 전체
모드 플러그인 dev.polymodloader.mod가 모드 프로젝트에 추가하는 작업입니다. 실행 디렉터리는 모드 프로젝트 기준입니다.
| 작업 | 하는 일 | 실행 디렉터리 | 창 |
|---|---|---|---|
validatePolyModJson | src/main/resources/poly.mod.json을 Poly 모드 로더의 메타데이터 검사기로 검증. check(build)에 포함 | — | — |
prepareMinecraftClient | Minecraft 클라이언트, 라이브러리, 에셋을 받아 해시로 검증 | 캐시 ~/.gradle/caches/poly-minecraft | — |
prepareMinecraftServer | 전용 서버를 받아 검증하고 번들을 풂 | 캐시 ~/.gradle/caches/poly-minecraft | — |
runClient | Poly 모드 로더를 거쳐 클라이언트 실행 | run/client | 뜸 |
runServer | Poly 모드 로더를 거쳐 전용 서버 실행. 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 | 없음 |
clientWorldReloadTest | worldCreateSaveTest가 저장한 월드를 클라이언트로 다시 열기. worldCreateSaveTest를 먼저 실행 | build/poly/client-world-reload | 잠깐 뜸 |
startupBenchmark | 게임 테스트 서버의 시작부터 종료까지 시간을 바닐라와 Poly 모드 로더로 번갈아 측정. 결과는 startup-benchmark.json | build/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를 붙입니다.
- Windows (PowerShell)
- macOS · Linux (bash)
.\gradlew.bat gameTests "-PpolyMinecraft=26.2" "-PpolyTests=ruby_mod:*"
./gradlew gameTests "-PpolyMinecraft=26.2" "-PpolyTests=ruby_mod:*"
- 실행에 쓰는 버전 어댑터와 Java 툴체인이 고른 버전을 따릅니다.
- Poly 모드 로더가 지원하지 않는 버전을 고르면 지원 버전 목록을 보여 주고 실패합니다.
- 모드가 어느 버전에서 실행되는지는 이 값이 아니라
poly.mod.json의minecraft목록이 정합니다. poly.mod.json을 보세요.
전용 서버 실행
- Windows (PowerShell)
- macOS · Linux (bash)
.\gradlew.bat runServer
./gradlew runServer
runServer는run/server에서 전용 서버를 실행합니다.- 전용 서버는 Minecraft EULA 동의가 필요합니다. Poly 모드 로더는 사용자를 대신해 동의하지 않습니다.
run/server/eula.txt에eula=true가 없으면 작업은 게임을 시작하기 전에 안내 메시지와 함께 실패합니다. - EULA를 직접 읽어 보고 동의한다면
run/server/eula.txt에eula=true를 직접 적으세요. serverBootSmokeTest는 EULA 확인이 필요 없습니다. 매번 빈 디렉터리에서 시작하므로 서버가 EULA 확인 단계에서 멈추고, 작업은 거기까지의 로그만 확인합니다.