AltUnity Tester - это инструмент автоматизации тестирования на основе пользовательского интерфейса с открытым исходным кодом, который помогает находить объекты в вашей игре Unity и взаимодействовать с ними с помощью тестов, написанных на C #, Python или Java.
Как работает
Запускать тесты можно на реальных устройствах или в редакторе Unity. Фреймворк состоит из следующих модулей:
Сервер AltUnity
Драйвер AltUnity
Окно редактора AltUnity Tester
Модуль AltUnity Server нужен, чтобы игра открывала доступ ко всем объектам в иерархии Unity. Игра открывает соединение сокета TCP на устройстве, на котором запущено приложение Unity, и ожидает подключения драйвера после запуска приложения.
Модуль драйвер AltUnity используется для подключения к серверу AltUnity, доступа ко всем объектам Unity и взаимодействия с ними посредством тестов, написанных на C #, Java или Python.
Окно редактора AltUnity Tester - это графический интерфейс, используемый для инструментовки игры Unity и запуска тестов C # непосредственно из редактора Unity.

Установка
Установка достаточна простая, устанавливается Asset Store - ссылка. Так же можно скачать через GitHub.
Далее переходим в диспетчер загрузок Asset Store из редактора Unity и импортируйте пакет в свой проект. После этого в редакторе появится меню AltUnity Tools. Через него можно открыть окно редактора, для запуска тестов.

Первый тест
В папке Editor создаем первый тест.

Пример написан на C#.
using System.Collections.Generic; using NUnit.Framework; using Altom.AltUnityDriver; using UnityEngine; public class FirstTest { public AltUnityDriver altUnityDriver; //Before any test it connects with the socket [OneTimeSetUp] public void SetUp() { altUnityDriver =new AltUnityDriver(); } //At the end of the test closes the connection with the socket [OneTimeTearDown] public void TearDown() { altUnityDriver.Stop(); } [Test] public void Test() { //Load Scene altUnityDriver.LoadScene("level_1"); // Find player AltUnityObject player = altUnityDriver.FindObject(By.TAG,"Player"); // Get the health parameter var shealth = player.GetComponentProperty("Health","health","Assembly-CSharp"); int health = int.Parse(shealth); while (health>= 100) { //Go ahead AltUnityKeyCode kcode = AltUnityKeyCode.D; altUnityDriver.PressKey(kcode, 3); shealth = player.GetComponentProperty("Health","health","Assembly-CSharp"); health = int.Parse(shealth); } } }
Что в нем происходит. Методы SetUp и TearDown запускают драйвер для дальнейшей работы. Метод Test собственно наш тест. Мы загружаем нужную нам сцену, далее находим нашего игрока. Класс AltUnityObject представляет объекты в игре и позволяет взаимодействовать с ними. У игрока получаем параметр здоровье, далее пока здоровье больше 100 идем вперед.
Запуск тестов
В окне AltUnity Editor запускаем игру. Далее нажимаем Run All Tests и ждем результатов. Белый круг - игрок. Красный овал- враг. При сопрекосновении наносится урон.

Лицензия
Как писалось выше это опенсорсный инструмент. Но есть дополнительный платный инструмент AltUnity Inspector, стоит от 18$ за пользователя в месяц. Нужен для автоматизации тестов без редактора Unity. Что тоже бывает удобно.

Итоги
Инструмент довольно интересный и простой в изучении. Позволяет быстрее писать UI тесты для проектов. Так же у него хорошая поддержка и комьюнити в Discord. Советую попробовать, если задумывались над автоматизацией в Unity проектах.
P.S. Часть информации взята и переведена из официальной документации.
