版本:Unity 6 (6000.0)
语言:English
包布局
为包创建示例

向包中添加测试

与任何类型的开发一样,向您的包中添加测试是一个好习惯。要在您的包上设置测试,您必须执行三件事

  1. 创建 C# 测试文件并将其放在 Tests 文件夹下
  2. 为您的测试创建asmdef 文件
  3. 为您的包启用测试

测试文件的位置

您可以将测试文件添加到包的 EditorRuntime 子文件夹中的 Tests 文件夹中。例如,一个包含测试的简单包可能如下所示

<package-root>
  ├── package.json
  ├── Editor
  │     ├── <company-name>.<package-name>.Editor.asmdef
  │     └── EditorExample.cs
  ├── Runtime
  │     ├── <company-name>.<package-name>.asmdef
  │     └── RuntimeExample.cs
  └── Tests
        ├── Editor
        │    ├── <company-name>.<package-name>.Editor.Tests.asmdef
        │    └── EditorExampleTest.cs
        └── Runtime
             ├── <company-name>.<package-name>.Tests.asmdef
             └── RuntimeExampleTest.cs

每个子文件夹都必须包含一个 .asmdef 文件,该文件提供对 Editor 和 Runtime 程序集的引用。程序集定义文件还提供对测试程序集文件的引用。有关更多信息,请参阅测试的程序集定义文件

测试的程序集定义文件

使用测试框架测试框架包(以前称为测试运行器)是 Unity 工具,用于在编辑模式和播放模式下以及在独立、Android 或 iOS 等目标平台上测试您的代码。更多信息
请参阅术语表
包创建或编辑您的程序集定义文件。有关更多信息,请参阅创建测试程序集

虽然您可以选择直接编辑程序集定义文件,但您需要确保添加以下引用

属性 类型 描述
名称 字符串 程序集的名称,不包括文件扩展名。
引用 字符串数组 对 Editor 和 Runtime 程序集的引用。程序集定义文件需要不同的引用,具体取决于测试类型
- 对于 Editor 测试,请添加对包的 Editor 和 Runtime 程序集的引用。
- 对于 Runtime 测试,请仅添加对包的 Runtime 程序集的引用。
optionalUnityReferences 字符串数组 此 Unity 引用列表必须包含 "TestAssemblies" 以将程序集标记为测试程序集。这会将对 nunit.framework.dllUnityEngine.TestRunner.dll 库的引用添加到程序集定义中。
includePlatforms 字符串数组 对于 Editor 测试,此平台列表必须包含 "Editor" 平台。

提示:您也可以在检查器一个 Unity 窗口,显示有关当前选定的游戏对象、资源或项目设置的信息,允许您检查和编辑值。更多信息
请参阅术语表
中编辑程序集定义文件。有关更多信息,请参阅程序集定义

Editor 文件示例

编辑器测试 .asmdef 文件如下所示

{
  "name": "MyCompany.MyPackage.Editor.Tests",
  "references": [
    "MyPackage.Editor",
    "MyPackage"
  ],
  "optionalUnityReferences": [
    "TestAssemblies"
  ],
  "includePlatforms": [
    "Editor"
  ],
  "excludePlatforms": []
}

Runtime 文件示例

运行时测试 .asmdef 文件如下所示

{
  "name": "MyCompany.MyPackage.Tests",
  "references": [
    "MyPackage"
  ],
  "optionalUnityReferences": [
    "TestAssemblies"
  ],
  "includePlatforms": [],
  "excludePlatforms": []
}

启用包的测试

对于嵌入式包嵌入式包是一个可变包,您将其存储在 Unity 项目根目录下的 Packages 目录中。这与您从包服务器下载的大多数包(不可变)不同。更多信息
请参阅术语表
,您无需显式启用测试,因为嵌入式包处于开发状态。

但是,对于其他类型的依赖项,您需要将testables 属性添加到项目清单每个 Unity 项目都有一个项目清单,它充当包管理器的入口点。此文件必须位于 <project>/Packages 目录中。包管理器使用它来配置许多内容,包括该项目的依赖项列表,以及查询包的任何包存储库。更多信息
请参阅术语表
并添加具有您要运行的测试的包的名称。这包括项目中的直接和间接依赖项当您的项目请求一个本身“依赖于”另一个包的包时,就会发生间接或传递依赖项。例如,如果您的项目依赖于 [email protected] 包,而该包又依赖于 [email protected] 包,那么您的项目对 Alembic 有直接依赖项,对 Timeline 有间接依赖项。更多信息
请参阅术语表
。例如

{
  "dependencies": {
    "com.unity.some-package": "1.0.0",
    "com.unity.other-package": "2.0.0",
    "com.unity.yet-another-package": "3.0.0",
  },
  "testables": ["com.unity.some-package", "com.unity.other-package"]
}

此示例在 Unity 的测试框架包中添加了 com.unity.some-packagecom.unity.other-package 包的测试。

注意:您可能需要再次导入包,因为测试框架并不总是立即获取对 testables 属性的更改。

包布局
为包创建示例