Version: 6000.3
语言: 中文
8. 播放器中的 PlayMode 测试
10. 长时间运行的测试

9. 使用 UnityTest 属性

学习目标

本节将向您介绍自定义[UnityTest]属性,允许创建在多个帧上运行的测试。

介绍和动机

我们对 Nunit 框架所做的一个重要扩展是引入了[UnityTest]属性。该属性允许创建可以在特定条件后产生并恢复运行的测试。因此,测试的返回类型必须为IEnumerator.然后,您可以返回 yield 指令或 null,如下所示:

[UnityTest]
public IEnumerator MyTest()
{
 DoSomething();
 // Skip 1 frame.
 yield return null;
 DoSomethingElse();
}

在上面的代码段中,我们调用DoSomething方法,然后跳过一帧,然后调用DoSomethingElse方法。

有关 C# 中的 yield 关键字的详细信息,请参阅 Microsoft 文档

锻炼

示例 9_UnityTestAttribute你会发现一个 播放模式(Play Mode) 测试程序集,其中设置了一个播放模式测试。PlayMode 测试还没有主体,但有一个名为PrepareCube()这将设置一个应用了一些物理特性的立方体。

任务是初始化多维数据集,然后验证它在一帧过去后是否已移动。

溶液

完整的解决方案可在9_UnityTestAttribute_Solution样本。

[UnityTest]
public IEnumerator CubeMovesDown()
{
 var cubeUnderTest = PrepareCube();
 var initialPosition = cubeUnderTest.transform.position;

 yield return null;

 Assert.That(cubeUnderTest.transform.position, Is.Not.EqualTo(initialPosition));
}

其他资源

UnityTest 属性

8. 播放器中的 PlayMode 测试
10. 长时间运行的测试