Version: 6000.3
语言: 中文
Unity 测试框架的一般介绍
2. 安排、行动、断言

1. 在 Unity 项目中运行测试

学习目标

本练习将教你如何使用测试程序集和测试设置一个简单的 Unity 项目。它还将介绍基于 NUnit 的单元测试的结构。

介绍和动机

在 Unity,我们测试内容的主要方式是使用 Unity 测试框架,该框架作为默认包当您创建新项目时,Unity 会自动预安装选定数量的默认包(例如,Analytics 库、Unity 时间轴等)。这与捆绑包不同,因为您不需要安装它,并且它与内置包不同,因为它扩展了 Unity 的功能,而不是能够启用或禁用它们。
请参阅术语表
在 Unity 编辑器中。了解如何设置带有测试的基本项目可以帮助您开始您的旅程。

锻炼

导入示例 1_RunningTest_Project从 Package Manager 窗口进入 Unity 编辑器(版本 2019.2 或更高版本)。

注意:该项目包含一个.cs文件 (MyMath.cs),这是一个简单的数学实现。练习是为此类创建单元测试。

打开 Test Runner UI(TestRunner > 常规窗口> Window),并在 MyExercise 文件夹旁边设置新的 EditMode 测试程序集。详细说明可在入门部分找到。在新的测试程序集文件夹中创建一个新测试(默认名称为Tests)中,或右键单击“项目”窗口,然后选择“创建>测试> C#测试脚本”。在进行测试之前,还需要将测试程序集与现有代码程序集链接起来。单击您在“项目”窗口中创建的测试程序集以在检查器中查看它(单击“测试”文件夹>“测试”)。

在装配定义参考中,您将看到UnityEngine.TestRunnerUnityEditor.TestRunner已经被引用,以及对 NUnit 的程序集引用。单击装配定义参考零件中的“+”按钮以添加新参考。点击小圆圈,选择MyExercise,然后单击底部的应用inspector一个 Unity 窗口,显示有关当前所选游戏对象、资产或项目设置的信息,允许您检查和编辑值。更多信息
请参阅术语表
(您可能需要向下滚动)。

使用 IDE(Visual Studio 或 Rider)打开 C# 解决方案,然后打开创建的测试文件。您可以使用[UnityTest]属性,因为你不需要它。在[Test]属性,您可以添加一个 assert 语句,以验证MyMath.Add工作正常。例如,使用Assert.AreEqual.将方法重命名为更具描述性的内容。一个好的做法是方法名称应描述正在测试的内容。例如,类名可以是MyMathTests然后第一个测试可能是AddsTwoPositiveIntegers.如果需要,可以添加其他方法来测试其他数字组合。最佳做法是每个测试都应只有一次检查。

切换回 Unity 并转到测试运行程序测试框架包(以前称为测试运行程序)是一个 Unity 工具,可在编辑模式和播放模式下测试代码,也可以在目标平台(如独立平台、Android 或 iOS)上测试代码。更多信息
请参阅术语表
用户界面。在这里,您应该看到一个树结构,其中包括测试程序集名称、类名称和方法名称。这反映了使用 NUnit 进行测试的一般结构,NUnit 是构建 Unity 测试框架的框架。每个类可以有多个测试,并且命名空间/程序集中可以有多个测试类。您可以双击您的测试名称或其任何父级来运行测试。如果您的测试代码通过,您将看到一个绿色复选标记,如果您的测试代码失败,您将看到一个红色十字。请注意,如果您没有看到任何测试,请记住检查您的控制台日志。任何编译错误都会阻止显示所有测试。

现在,您可以返回测试代码并为Subtract方法。请注意,您可能会看到测试失败,因为我们的Subtract方法。在您看到测试失败并出现有意义的错误(例如Expected 2, but got 6),您可以转到MyMath.cs并将返回值固定为公正return a - b;.然后重新运行测试以验证是否已修复错误。

提示

  • 有时,用于创建测试程序集和创建第一个测试文件的 UI 可能有点难以使用。如果测试运行程序界面未注册程序集,请尝试单击项目窗口一个窗口,显示您的内容Assets文件夹(项目选项卡)更多信息
    术语表中查看
    或导航到带有 ASMDEF 的文件夹。

溶液

可以在示例中找到此练习的解决方案1_RunningTest_Project_Solution.该解决方案包含一个Tests文件夹中带有asmdef文件和和一个.cs文件,其中包含测试。

其他资源

Unity 测试框架的一般介绍
2. 安排、行动、断言