TDD и модульные тесты, GML Game Maker Language

Я супер новичок в GML и TDD. Я хотел бы попрактиковаться в разработке через тестирование и модульных тестах для Game Maker Language, GML. Возможно ли это, поскольку GML управляется событиями? Мне не посчастливилось найти много примеров или руководств о том, как реализовать модульное тестирование и разработку через тестирование в GML.

Как вы пишете модульные тесты на языке разработчика игр?


person Onizuka    schedule 17.10.2013    source источник


Ответы (2)


Я начал писать тестовый фреймворк специально для GML. Он называется hobo_test, и вы можете найти его на github. Цель состоит в том, чтобы предоставить набор объектов / скриптов, которые вы можете перетащить в любой проект (из средства поиска), а затем начать писать несколько простых тестов.

with(o_player)
  {
  before_lives = num_lives
  take_damage();
  it("should decrease the number of lives",  before_lives-1, num_lives);
  }

Это обновит счетчики на объекте TEST, на котором будут отображаться результаты всех ваших тестов (зеленая точка - успех, красная - неудача). В случае неудачного теста он распечатает написанное вами заявление «следует» с ожидаемыми и фактическими результатами.

Я обнаружил, что ограничения GML заставили меня написать множество вспомогательных методов и бороться с отсутствием обработки исключений.

Насколько мне известно, это единственная существующая среда тестирования для GameMaker, и ей еще предстоит пройти долгий путь, чтобы обеспечить полную TDD при разработке игры. (Мне удалось написать клон сапера с текущей итерацией). Я планирую продолжить развитие проекта и, надеюсь, сделать его более надежным и простым в использовании.

person Dan Bradbury    schedule 11.09.2014
comment
Я работал над настройкой модульного теста, тогда как ваш выглядит как приемочный тест в стиле Gherkin. Может быть, неплохо начать работу над более полным набором тестов? GMLive от YAL может быть хорошим дополнением так же, как и Rubber. - person Rob; 22.01.2019
comment
@RobQuist недавно поигрался с GMLive: D также проверит Rubber ... очевидно, я не могу написать вам здесь ... но если вы можете связать свое репозиторий на github, я бы хотел увидеть проект, над которым вы работаете .. Просто вернулся к работе над hobo_test и решил, что больше делиться идеями - это всегда хорошо - person Dan Bradbury; 25.01.2019

Вы можете выполнить модульное тестирование всего, что можно вызвать изолированно, с проверяемым результатом.

Я не знаю GML, но, насколько я могу судить по Википедии, это язык сценариев специального назначения. Если вам удастся вызвать такой сценарий извне, где бы он ни был, и вам удастся проверить результат, вы сможете его протестировать.

Тем не мение,

"GML is heavily integrated with the Game Maker environment."

может означать, что вы не можете вызывать какие-либо скрипты или функции изолированно.

person EricSchaefer    schedule 29.10.2013
comment
К сожалению, GML на самом деле не будет работать без бегуна, и импорт / запуск отдельных файлов GML в отдельной среде - это своего рода боль. Вам нужно будет интегрировать сценарии тестирования и загружать игру особым образом, чтобы вы запускали набор тестов вместо игры. - person Rob; 22.01.2019