Unity 6.3
0 онлайн 25 гостей 3 в системе
Вход

11. Испытания на основе Scene

Цели обучения

В этом упражнении вы узнаете, как проверить содержимое, которое хранится в сцене.

Введение и мотивация

Полезным сценарием для наших клиентов является использование тестового фрейма для проверки содержания сцены. Это может быть проверка на определенные GameObjects и MonoBehaviors.

EditorSceneManager позволяет загружать и сохранять сцены. В сочетании с тестовой платформой это позволяет реализовывать тесты, которые проверяют сцену.

Если тест меняет состояние редактора — например, загружает сцену, — стоит навести порядок после него. Это можно сделать в методе с атрибутом [TearDown].

2010 год

Импорт образец 11_SceneBasedTests, который содержит сцену под названием MyGameScene и сборка для тестов режима редактирования.

Задача состоит в том, чтобы создать тест, который открывает сцену, проверяет, что сцена содержит GameObject с именем GameObjectToTestFor.

В качестве cleanup, она должна открыть новую пустую сцену, которая является по умолчанию для тестов режима редактирования. Рекомендуется поместить это в [TearDown], что обеспечивает выполнение кода очистки, даже если тест не удаётся.

Подсказки

  • EditorSceneManager.OpenScene("Assets\\MyGameScene.unity"); загружает сцену
  • EditorSceneManager.NewScene(NewSceneSetup.DefaultGameObjects, NewSceneMode.Single); очищает, переходя обратно к пустой сцене.

Решение

Полное решение доступно в образце 11_SceneBasedTests_Solution.

Реализация теста может выглядеть следующим образом:

public class SceneTests
{
 [SetUp]
 public void Setup()
 {
  EditorSceneManager.OpenScene("Assets\\MyGameScene.unity");
 }
 
 [Test]
 public void VerifyScene()
 {
  var gameObject = GameObject.Find("GameObjectToTestFor");
  
  Assert.That(gameObject, Is.Not.Null);
 }

 [TearDown]
 public void Teardown()
 {
  EditorSceneManager.NewScene(NewSceneSetup.DefaultGameObjects, NewSceneMode.Single);
 }
}

Дополнительные ресурсы

API ссылка для EditorSceneManager