Скачать PackTest — Minecraft Моды — MetaMods
PackTest

PackTest

Активный

Установок

0

Последнее обновление

3 месяца назад

Версии

1.20.4 — 1.21.7
Сервер
Fabric
Управление
Утилиты

PackTest

PackTest открывает перед разработчиками возможность создавать игровые тесты непосредственно в датапаках. Тесты представляют собой файлы *.mcfunction, размещённые в специальной папке test. Этот инструмент идеально подходит для проверки работоспособности пользовательских датапаков.

Пример использования

data/example/test/foo.mcfunction

#> Призывает бронестойку и проверяет её наличие
# @template example:small_platform
# @optional

summon armor_stand ~1.5 ~1 ~1.5
execute positioned ~1.5 ~1 ~1.5 run assert entity @e[type=armor_stand,dx=0]

assert predicate example:test

setblock ~1 ~1 ~1 grass_block
execute if block ~1 ~1 ~1 stone run succeed

fail "О нет"

Асинхронное тестирование

Тестовые функции поддерживают асинхронное выполнение с использованием ключевого слова await!

setblock ~ ~ ~ stone
summon item ~ ~6 ~

await entity @e[type=item,distance=..2]

await delay 1s

data merge entity @e[type=item,distance=..2,limit=1] {Motion: [0.0, 0.01, 0.0]}

Запуск тестов

Тесты можно запускать непосредственно в игре с помощью команды test:

  • test runall — запускает все доступные тесты
  • test runall <пространство_имён> — выполняет тесты из указанного пространства имён
  • test run <тест> — запускает конкретный тест по имени
  • test runfailed — повторяет все ранее проваленные тесты
  • test runthis — запускает ближайший тест
  • test runthese — выполняет все тесты в радиусе 200 блоков

Автоматический сервер тестирования

Тесты также могут запускаться автоматически, например, в среде непрерывной интеграции. При установке параметра -Dpacktest.auto игровой тестовый сервер автоматически запускается с загруженными тестами. Процесс завершается после выполнения всех тестов, а код выхода соответствует количеству неудачных тестов.

Параметр -Dpacktest.auto.annotations генерирует аннотации GitHub для всех ошибок тестирования и проблем с загрузкой ресурсов.

Команды тестирования

fail

  • fail <текстовый_компонент> — завершает текущий тест с ошибкой и выходит из функции

succeed

  • succeed — всегда завершает текущий тест успешно и выходит из функции

assert

  • assert <условие> — если условие не выполняется, завершает тест с ошибкой
  • assert not <условие> — если условие выполняется, завершает тест с ошибкой

await

  • await <условие> — аналогично assert, но повторяет проверку каждый тик до успеха или таймаута
  • await not <условие> — повторяет проверку до тех пор, пока условие не перестанет выполняться
  • await delay <время> — ожидает указанное количество времени с единицей измерения

Условия проверки

  • block <позиция> <блок> — проверяет соответствие блока на указанной позиции
  • data ... — проверяет NBT данные с использованием синтаксиса execute if score
  • entity <селектор> — проверяет наличие сущностей по селектору
  • predicate <предикат> — проверяет предикат в датапаке
  • score ... — проверяет очки с использованием синтаксиса execute if score
  • chat <шаблон> [<получатели>] — проверяет соответствие сообщения в чате регулярному выражению

Тестовые игроки (манекены)

Искусственные игроки создаются с помощью команды /dummy. Манекены не сохраняют данные на диск и не загружают скины.

Основные команды управления манекенами:

  • dummy <имя> spawn — создаёт нового манекена
  • dummy <имя> respawn — возрождает манекена после смерти
  • dummy <имя> leave — удаляет манекена с сервера
  • dummy <имя> jump — заставляет манекена прыгнуть
  • dummy <имя> sneak [true|false] — включает/выключает режим скрытности
  • dummy <имя> sprint [true|false] — включает/выключает спринт
  • dummy <имя> drop [all] — выбрасывает предмет из руки
  • dummy <имя> swap — меняет местами предметы в руках
  • dummy <имя> selectslot — выбирает другой слот на панели быстрого доступа
  • dummy <имя> use item — использует предмет в руке
  • dummy <имя> use block <позиция> [<направление>] — использует предмет на блоке
  • dummy <имя> use entity <сущность> — использует предмет на сущности
  • dummy <имя> attack <сущность> — атакует сущность
  • dummy <имя> mine <позиция> — добывает блок

Директивы тестирования

Тесты можно настраивать с помощью специальных комментариев в начале функции:

  • @template — указывает шаблон структуры для теста (по умолчанию пустая структура 1x1x1)
  • @timeout — задаёт таймаут теста (по умолчанию 100)
  • @optional — разрешает неудачное завершение теста (по умолчанию false)
  • @dummy — создаёт манекена в начале теста и устанавливает @s на него
  • @batch — имя группы тестов (по умолчанию packtestBatch)
  • @beforebatch — команда для выполнения перед группой тестов
  • @afterbatch — команда для выполнения после группы тестов
Участники проекта
Misode

Misode

Разработчик

Создан: 21 дек 2023

ID: 6644