Version: 6000.3
语言: 中文
10. 长时间运行的测试
12. 构建时的设置和清理

11. 基于场景的测试

学习目标

在本练习中,您将学习如何测试存储在场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
请参阅术语表
.

介绍和动机

对我们的客户来说,一个有用的场景是使用测试框架来验证场景的内容。这可能是检查某些游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、相机、航路点等。游戏对象的功能由附加到它的组件定义。更多信息
请参阅术语表
和 MonoBehaviors。

EditorSceneManager 允许加载和保存场景。结合测试框架,这允许实现验证场景的测试。

在测试中更改编辑器的状态时,例如加载场景,最好在之后进行清理。这可以在使用[TearDown]属性。

锻炼

导入示例 11_SceneBasedTests,其中包含名为MyGameScene以及用于编辑模式测试的程序集。

任务是创建一个测试来打开场景,验证场景是否包含名为GameObjectToTestFor.

作为清理,它应该打开一个新的空场景,这是编辑模式测试的默认设置。建议将其放在[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

10. 长时间运行的测试
12. 构建时的设置和清理