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. Часть информации взята и переведена из официальной документации.