Pull to refresh

AltUnity Tester для автоматизации Unity проектов

Reading time3 min
Views4.7K

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

Tags:
Hubs:
Total votes 1: ↑1 and ↓0+1
Comments1

Articles