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);
}
}