1.21.5 테스트 기능에 대하여

2025. 2. 14. 16:28·마인크래프트 강좌/데이터팩 강좌
반응형

마인크래프트 자바에디션 25w07a를 기준으로 작성되었습니다.

관련 정보가 매우 부족합니다. 틀린 내용이 있을 수 있습니다.

마인크래프트 자바에디션 25w03a에 테스트 기능이 추가되었습니다.

이 테스트 기능은 유저가 개발한 기능이 의도한대로 작동하는 지 반복적으로 테스트를 수행하고 오류가 있는지 검증할 때 사용할 수 있습니다.

 

주의사항

이 글은 자바에디션 25w07a를 기준으로 작성되었습니다.

하지만 최신버전에서 테스트 블록들의 그래픽이 변경되었습니다.

이 점 염두하고 글 확인해주시기 바랍니다.

 

테스트 인스턴스 블록과 테스트 블록

테스트 기능에 사용되는 블록입니다.

관리자 도구를 통해 가져올 수 있으며 (탭이 없으면 조작에 가서 활성화해주세요)

맨 왼쪽은 테스트 인스턴스 블록, 나머지는 테스트 블록입니다.

테스트 인스턴스 블록

테스트를 실행시키는 핵심 블록입니다.

구조물 블록처럼 빈 구조물을 생성하고 구조물을 저장하는 기능을 가지고 있으며 테스트를 불러오고 실행시킬 수 있습니다.

또한 테스트의 결과를 신호기처럼 출력해줍니다.

 

테스트 블록

테스트 블록은 구조물 블록처럼 모드를 변경할 수 있으며 모드에 따라 블록의 텍스쳐가 변경되게 됩니다.

이 블록은 후술할 block_based 테스트에서 사용하게 되며 총 4개의 모드가 존재합니다.

  • 시작 : 테스트가 시작될 때 레드스톤 신호를 방출합니다.
  • 로그 : 테스트 중 레드스톤 신호를 받으면 서버 로그에 메세지를 남깁니다.
  • 실패 : 테스트 중 레드스톤 신호를 받으면 테스트가 실패합니다.
  • 수락 : 테스트 중 레드스톤 신호를 받으면 테스트가 성공합니다.

로그가 남기는 메세지는 이런 느낌입니다.

 

테스트 인스턴스

테스트 인스턴스는 데이터팩에서 정의해주는 테스트에 대한 정보입니다. 이곳의 정보를 바탕으로 테스트가 정의됩니다.

데이터팩의 test_instance 폴더 내의 json 파일로 정의됩니다.

  • environment
    • 이 테스트를 실행할 때 적용되는 테스트 환경 (후술)의 네임스페이스 ID입니다.
  • structure
    • 테스트에서 사용할 구조물의 네임스페이스 ID입니다.
  • max_ticks
    • 테스트가 실행된 후 시간 초과로 간주되는 틱입니다. (시간 제한)
  • setup_ticks (선택사항, 기본값 0)
    • 구조물을 배치한 후 테스트를 시작하기 전 기다리는 틱 값입니다.
  • required (선택사항, 기본값 true)
    • 테스트가 전체 테스트 모음을 통과하기 위해서 통과되어야 하는 지 여부입니다.
    • (자세한 정보 확인 불가)
  • rotation (선택사항, 기본값 none)
    • 테스트 구조물을 회전시킵니다.
    • none, clockwise_90, 180, counterclockwise_90 중 1개를 사용합니다.
  • manual_only (선택사항, 기본값 false)
    • true일 경우 자동화된 test run을 통해 실행되지 않는 테스트로 설정합니다.
  • sky_access (선택사항, 기본값 false)
    • 테스트의 천장이 비어있어야 하는 지 여부입니다.
    • 테스트는 기본적으로 구조물을 방벽이 감싸고 실행되는데 true로 설정될 경우 천장 방벽이 제거됩니다.
  • max_attempts (선택사항, 기본값 1)
    • 테스트를 실행하기 위해 시도하는 회수입니다.
  • required_successes (선택사항, 기본값 1)
    • 테스트의 결과가 성공으로 간주되기 위해 테스트가 성공해야 하는 회수입니다.
  • type
    • 테스트의 유형입니다.
    • function - 함수를 통해 테스트합니다. (mcfunction이 아닌 실제 자바 함수를 의미합니다.)
    • block_based - 블록을 통해 테스트합니다.
      • 이 유형의 테스트는 구조물 내 시작 테스트 블록과 수락 테스트 블록이 무조건 존재해야 합니다.
  • function (type이 function 일 때)
    • 실행할 테스트 함수의 네임스페이스 ID입니다. (실제 자바 함수)

 

예시 (모든 값을 일부러 채워넣었습니다. 기본값 존재하는 필드는 기본값 쓸거면 안적어도 됩니다.)

{
    "environment": "potan:for_test1",
    "structure": "potan:test1",
    "max_ticks": 60,
    "setup_ticks": 1,
    "required": false,
    "rotation": "none",
    "manual_only": false,
    "sky_access": false,
    "max_attempts": 1,
    "required_successes": 1,
    "type": "minecraft:block_based"
  }

 

테스트 환경

테스트 환경은 테스트가 실행될 때 월드의 환경을 설정합니다.

데이터팩의 test_environment 폴더에서 정의됩니다.

각 환경은 type에서 설정된 유형과 유형에 따른 추가값들로 구성됩니다. (예시 참조)

  • type : all_of
    • 여러 환경 유형을 합칩니다.
    • definitions
      • 합칠 유형 리스트입니다.
  • type : function
    • 테스트를 설치하고 해체할 때 mcfunction을 실행합니다.
    • setup (선택사항): 테스트를 설치할 때 실행되는 mcfunction의 네임스페이스 id입니다.
    • teardown (선택사항): 테스트를 해체할 때 실행되는 mcfunction의 네임스페이스 id입니다.
  • type : game_rules
    • 테스트 과정 동안 적용되는 게임룰입니다. 테스트 종료 후 리셋됩니다.
    • bool_rules : false, true로 설정하는 게임룰의 값 리스트입니다.
      • 리스트의 각 항목 ( { } 로 감쌈)
        • rule : 게임 룰의 이름
        • value : 설정할 값
    • int_rules : 정수로 설정하는 게임룰의 값 리스트입니다.
      • 리스트의 각 항목 ( {}로 감쌈)
        • rule : 게임룰에 대한 이름
        • value : 설정할 값
  • type : weather
    • 테스트 과정동안 적용되는 날씨입니다. 테스트 종료 후 리셋됩니다.
    • weather : 설정할 날씨입니다.
      • clear, rain, thunder 중 하나를 사용합니다.
  • type : time_of_day
    • 테스트 시작 때 시간을 변경합니다. 
    • time : 설정할 시간(틱)입니다.

예시

{
  "type": "minecraft:all_of",
  "definitions": [
    {
      "type": "function",
      "setup": "potan:test1/setup",
      "teardown": "potan:test1/teardown"
    },
    {
      "type": "game_rules",
      "bool_rules": [
        {
          "rule": "doDaylightCycle",
          "value": false
        },
        {
          "rule": "doWeatherCycle",
          "value": false
        }
      ],
      "int_rules": [
        {
          "rule": "maxCommandChainLength",
          "value": 65536
        }
      ]
    },
    {
      "type": "weather",
      "weather": "rain"
    },
    {
      "type": "time_of_day",
      "time": 10
    }
  ]
}

테스트 실행동안 setup -> 테스트 -> teardown 함수가 호출이 되며

테스트 실행중엔 비가 오고 시간이 10으로 변경됩니다. (테스트 종료 후 비는 다시 없어짐)

또한 doDaylightCycle 같은 게임룰이 원래 false였어도 테스트 종료후엔 기본값인 true가 됩니다.

 

/test

테스트 명령어는 테스트를 실행하고, 정리하는 기능을 수행할 수 있습니다.

그 외에도 좌표를 알아내는 등의 각종 기능을 가집니다.

  • /test clear~
    • 테스트 구조물을 지웁니다.
    • test clearthat : 바라보고 있는 테스트를 지웁니다.
    • test clearall [<범위>] : 플레이어 주변 범위 안 모든 테스트를 지웁니다. (기본값 200)
    • test clearthese : 플레이어의 200 범위 안 모든 테스트를 지웁니다.
  • /test create <테스트> [<가로>] [<세로> <깊이>]
    • <테스트> 네임스페이스 ID를 가진 테스트 구조물을 생성합니다. (파일 저장은 별도)
    • 가로 세로 깊이의 기본값은 5 5 5 입니다.

  • /test locate <테스트>
    • 로드된 청크에서 테스트를 찾습니다.
  • /test pos [<변수명>]
    • 테스트에서 가리키는 블록의 로컬 좌표를 보여줍니다.
    • 출력되는 로컬좌표를 클릭하여 해당 좌표에 대한 자바 코드를 복사할 수 있습니다.
    • 만약 변수명이 설정될 경우 복사할 때 변수명인 pos가 변수명으로 변경됩니다.

final BlockPos pos = new BlockPos(2, 0, 2);
  • /test reset~
    • 테스트 구조물을 초기 상태로 리셋합니다. (테스트 실행 X)
    • resetcloset : 가장 가까운 테스트
    • resetthat : 바라보고 있는 테스트
    • resetthese : 주변 테스트 전부
  • /test run <테스트> [<반복회수>] [<실패하면 종료>] [<회전>] [<행길이>]
    • 테스트를 설치하고 실행합니다.
    • <반복회수> : 설치한 테스트를 몇번 반복할지 설정합니다.
    • <실패하면 종료> : true로 설정 시 반복 중 테스트가 실패하면 반복을 중단합니다.
    • <회전> : 90 * <회전> 만큼 구조물을 회전시킵니다. (0, 1, 2, 3 중 1개)
    • <행길이> : 그리드 레이아웃으로 테스트를 실행시킬 때 한 행당 테스트의 개수입니다. (확인 불가능)

반복 회수를 10으로 설정했을 때 하나의 테스트를 10번 반복한 결과입니다.

  • /test runmultiple <테스트> [<개수>]
    • 동시에 여러개의 테스트를 진행합니다.

이런 느낌으로 한번에 쭉 배치됩니다.

  • /test run~ [<반복 회수>] [<실패하면 종료>]
    • 테스트를 재시작합니다. 
    • runcloset : 가장 가까운 테스트
    • runthat : 바라보고 있는 테스트
    • runthese : 주변 테스트들
  • /test runfailed [<반복 회수>] [<실패하면 종료>] [<회전>] [<행길이>]
  • /test runfailed [<오직required테스트만>] [<반복 회수>]
    • 실패한 테스트를 재실행합니다.
  • /test stop
    • 모든 테스트를 중단시킵니다.
  • test verify <테스트>
    • 테스트를 동시에 여러개 실행하여 검증합니다.

자동으로 위처럼 테스트가 작동합니다.

 

테스트 만들어보기

test create 명령어 또는 인스턴스를 직접 설치 후 구조물을 크기를 조정해 테스트 공간을 만듭니다.

테스트 블록을 사용하여 테스트 구조물을 제작 후 구조물 저장을 눌러 저장합니다.

저장된 구조물 데이터를 데이터팩에 넣습니다.

test_instance 폴더에 테스트 정보를 정의합니다.

default는 마인크래프트에서 기본으로 정의한 테스트 환경으로 아무 변화가 없습니다.

 

이제 마크를 재접속 후 /test run 등의 함수를 통해 실행시킵니다.

잘 배치후 실행됩니다.

테스트 인스턴스 블록을 통해 정보를 확인할 수 있고
불러오고 실행 버튼을 통해 테스트를 실행시킬 수 있습니다.

밤에는 실패하는 모습입니다.

반응형
저작자표시 (새창열림)

'마인크래프트 강좌 > 데이터팩 강좌' 카테고리의 다른 글

마인크래프트 JE 1.21.6 대화 상자(Dialog) 가이드  (12) 2025.06.05
마인크래프트 1.21.5 엔티티 유형 정리  (0) 2025.03.25
마인크래프트 데이터팩 강좌 [3-1] - 매크로  (1) 2025.02.07
마인크래프트 데이터팩 강좌 [2-1] - pack.mcmeta  (1) 2025.01.09
마인크래프트 데이터팩 강좌 [9-1] - Enchantment Provider  (0) 2024.06.26
'마인크래프트 강좌/데이터팩 강좌' 카테고리의 다른 글
  • 마인크래프트 JE 1.21.6 대화 상자(Dialog) 가이드
  • 마인크래프트 1.21.5 엔티티 유형 정리
  • 마인크래프트 데이터팩 강좌 [3-1] - 매크로
  • 마인크래프트 데이터팩 강좌 [2-1] - pack.mcmeta
Potan
Potan
안녕하세요 Potan입니다. 다양한 주제를 다루고 싶으나 마인크래프트를 주로 하고있습니다. 프사 : 카미쵸(kyamicho)
    반응형
  • Potan
    Potan의 게임블로그
    Potan
  • 전체
    오늘
    어제
    • 분류 전체보기 (258)
      • Minecraft Display Engine (1)
      • 마인크래프트 강좌 (50)
        • 명령어 강좌 (7)
        • 데이터팩 강좌 (18)
        • 리소스팩 강좌 (0)
        • 업데이트 정리 (22)
        • 블록벤치 강좌 (3)
      • 마인크래프트 (10)
        • 마크관련 잡담 (10)
        • 마인크래프트 맵 (1)
      • 유튜브 관련 (0)
      • 마인크래프트 모드강좌 (18)
        • Extra Utilities 2 (9)
        • 간단한 모드강좌 (0)
        • Refined Storage (4)
        • Thermal Expansion (5)
      • 마인크래프트 생존기 (156)
        • Sky Factory 3[완] (68)
        • Direwolf20[완] (10)
        • FTB Beyond[완] (78)
      • 잡담 (7)
        • 뻘글 (1)
      • 스팀게임 (4)
        • Clone Drone in the danger z.. (3)
      • itch.io (1)
      • 개발일지 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    스카이 블럭
    FTB
    Sky Factory3
    Beyond
    minecraft
    강좌
    데이터팩
    모드팩
    명령어
    datapack
    스카이 팩토리
    마인크래프트 데이터팩
    1.10.2
    Sfy Factory 3
    FTB Beyond
    생존기
    마인크래프트
    야생
    모드
    1.13
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Potan
1.21.5 테스트 기능에 대하여
상단으로

티스토리툴바