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

로그 확인 테스트

worldCreateSaveTest는 게임 테스트 서버에서 모드를 로드해 월드를 만들고 저장한 뒤, build.gradle.kts에 적은 로그 줄이 모두 나왔는지 확인합니다. 창은 뜨지 않습니다.

build.gradle.kts
tasks.named<dev.polymodloader.devtools.gradle.minecraft.VerifiedGameRunTask>("worldCreateSaveTest") {
expectedOutput.add("[ruby_mod] Hello from ruby_mod 0.1.0")
}
.\gradlew.bat worldCreateSaveTest
  • 엔트리포인트가 실행됐는지, 서버가 시작됐는지처럼 "실행 경로"를 확인할 때 씁니다.
  • 로그 줄은 모드 코드에서 SLF4J로 남깁니다.
static final Logger LOGGER = LoggerFactory.getLogger("ruby_mod");

LOGGER.info("[ruby_mod] Hello from {} {}", mod.modId(), mod.modVersion());

확인할 로그 줄과 파일​

worldCreateSaveTest, gameTests, serverBootSmokeTest는 같은 작업 타입(VerifiedGameRunTask)입니다. 확인할 내용을 두 속성으로 지정합니다.

속성뜻
expectedOutput게임 출력에 나와야 하는 문자열. 줄 전체가 아니라 일부만 맞아도 됩니다
expectedFiles게임이 끝난 뒤 있어야 하는 파일·폴더. 실행 디렉터리 기준 경로
build.gradle.kts
tasks.named<dev.polymodloader.devtools.gradle.minecraft.VerifiedGameRunTask>("worldCreateSaveTest") {
expectedOutput.add("[ruby_mod] Hello from ruby_mod 0.1.0")
expectedFiles.add(".poly/startup-report.json")
}
  • add는 작업이 원래 확인하는 항목에 항목을 더하고, set은 원래 항목을 통째로 바꿉니다.
  • worldCreateSaveTest의 월드는 실행 디렉터리의 universe/gametestworld/에 저장됩니다.
  • Poly 모드 로더 보고서는 실행 디렉터리의 .poly/에 생깁니다(문제 해결).

작업이 기본으로 확인하는 것​

모드 플러그인이 작업을 만들 때 넣어 두는 항목입니다. 직접 적은 항목은 여기에 더해집니다.

작업기본 로그 줄기본 파일
worldCreateSaveTestAll 1 required tests passeduniverse/gametestworld/level.dat
gameTestsrequired tests passed없음
serverBootSmokeTest없음없음
clientWorldReloadTestjoined the game—

확인 작업은 이렇게 동작합니다.

  1. 실행 디렉터리(build/poly/…)를 지우고 빈 디렉터리에서 시작합니다.
  2. 게임 출력을 콘솔에 보여 주면서 모아 둡니다.
  3. 게임이 끝나면 출력 전체를 실행 디렉터리의 verified-run-output.log에 씁니다.
  4. 빠진 로그 줄(missing log line: …)이나 파일(missing file: …)이 하나라도 있으면 작업이 실패합니다. 오류 메시지에 출력 로그의 경로가 나옵니다.
  5. 모두 있으면 … passed (N log lines, M files verified)를 남깁니다.

클라이언트 확인​

clientWorldReloadTest는 다른 작업 타입(ClientWorldReloadTask)입니다. worldCreateSaveTest가 저장한 월드를 클라이언트의 saves/에 복사해 바로 엽니다. 클라이언트는 창 없이 실행할 수 없어 창이 잠깐 뜹니다.

build.gradle.kts
tasks.named<dev.polymodloader.devtools.gradle.minecraft.ClientWorldReloadTask>("clientWorldReloadTest") {
// common 엔트리포인트는 클라이언트에서도 실행됩니다.
expectedOutput.add("[ruby_mod] Hello from ruby_mod 0.1.0")
}
속성뜻
expectedOutput클라이언트 출력에 나와야 하는 문자열
timeoutSeconds기다리는 최대 시간(기본 180초)
systemProperties클라이언트에 줄 Java 시스템 속성(key=value)
  • 기대한 줄이 모두 나오면 클라이언트를 끄고 통과합니다.
  • 시간 안에 다 나오지 않거나 클라이언트가 먼저 끝나면 빠진 줄을 알리고 실패합니다.
  • 출력 전체는 실행 디렉터리의 client-world-reload-output.log에 있습니다.
게임 내 테스트와 함께

게임 동작은 게임 내 테스트로, 로드·시작·저장 같은 흐름은 로그 확인 테스트로 확인하면 좋습니다.

Buy me a coffee