контекст
Я продолжаю некоторый унаследованный код для игры в Unity3d и хочу написать несколько функциональных тестов, предназначенных для регрессии, чтобы гарантировать, что я не сломаю вещи при реализации новых вещей или при рефакторинге.
Я уже знаю, что для Unity3d доступен набор «Unit Test Tools». Я использовал его как набор юнит-тестов, поэтому я тестирую свои модели (классы).
Пример того, о каком тесте я думаю
Под «функциональным тестом» я имею в виду такие вещи:
- Запустите программу
- Когда в меню сцены утверждают, есть кнопка с надписью «Пуск»
- Нажмите его
- Тогда утверждаю, что новая сцена загружена
- Пиксель утверждения XXX красный
- Нажмите в координате XXX
- Утвердите теперь, что пиксель изменился на зеленый
- и т.п.
Вопросов
В1: Как мне написать и запустить функциональные тесты для моей игры? Это также обычно делается в UnityTestTools (UTT)?
Q2: Если UTT больше подходит для модульного тестирования, то есть ли отдельный набор для функционального тестирования? Который из?
Заметки:
Я нацеливаюсь на Android и работаю Unity5.3.1f1
unity
automated-testing
Хави Монтеро
источник
источник
Ответы:
Насколько я понимаю, вы хотите понять автоматизацию тестирования в Unity.
Инструменты тестирования единства
Это должен быть ваш метод goto, но прежде чем копаться в том, как, я рассмотрю причину.
Предпочтительный способ выполнить любую форму автоматического тестирования - это сделать это в среде, максимально приближенной к производственной. Использование чего-то вроде инструментов тестирования Unity (живущих в редакторе Unity) звучит как плохая идея для тех, кто писал обычные интеграционные тесты.
Зачем? Потому что при любом интеграционном тестировании вам нужно наименьшее количество лишних вещей, затопляющих ваше приложение, которых нет, когда пользователь открывает его. Unity Editor может иметь другую производительность или поведение по сравнению с версией iOS (например).
Итак, зачем тогда использовать Unity Test Tools (UTT)?
Основная причина - удобство. И Unity Editor, и UTT построены на простоте и наглядности в использовании. Вам будет легко писать тесты, связывать их со своей конкретной игрой и понимать, когда они терпят неудачу.
Как насчет различий в поведении между Unity Editor и производством?
В конце концов, Unity Editor - это оболочка для вашего приложения. Это означает, что между редактором и производством будут некоторые различия. Но, если оставить в стороне интеграционное тестирование, редактор Unity уже давно является оберткой. Это зрелая платформа, на которой построены тысячи игр. Результаты, полученные при выполнении интеграционных тестов в редакторе, будут очень точными.
В приведенном вами примере сценария все, кроме первого элемента, может быть легко подтверждено с помощью Unity Test Tools. Вы можете открывать сцены и проверять поведение, как и любые другие интеграционные тесты.
Я предлагаю написать большинство (если не все) ваших тестов с использованием UTT. Чтобы добавить совместимость с инструментами непрерывной интеграции (например, Jenkins), вы можете запустить их из консоли, используя аргументы командной строки .
Запуск приложения и ручное тестирование
Запуская приложение, вы не можете точно контролировать его в редакторе Unity. Чтобы проверить этот аспект вашей игры и многое другое, вы можете использовать некоторые базовые ручные тесты.
Вот как это сделать:
альтернативы
Неудивительно, что, поскольку все, что связано с Unity, у нас есть более чем несколько альтернатив. Вот некоторые из них, которые вы можете рассмотреть:
В зависимости от масштаба и масштаба вашего проекта вы можете использовать один или несколько вариантов, которые я описал выше.
источник