Version: 2023.1
包布局
为资源包创建示例

向包添加测试

As with any kind of development, it’s good practice to add tests to your package. There are three things you must do to set up tests on your package:

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

测试文件的位置

You can add your test files to the Tests folder of your package in the Editor and Runtime subfolders. For example, a simple package with tests might look something like this:

<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

Each of those subfolders must contain an .asmdef file, which provides references to the Editor and Runtime assemblies. The assembly definition files also provide a reference to the test assembly files. For more information, refer to Assembly definition files for tests.

用于测试的程序集定义文件

可以直接编辑程序集定义文件。需要确保添加以下引用:

属性 类型 描述
name String 程序集的名称(不含文件扩展名)。
references 字符串数组 References to the Editor and Runtime assemblies. Assembly definition files require different references, depending on the test type:
- For Editor tests, add a reference to the package’s Editor and Runtime assemblies.
- For Runtime tests, add a reference to the package’s Runtime assembly only.
optionalUnityReferences 字符串数组 This list of Unity references must include "TestAssemblies" to mark the assembly as a test assembly. This adds references to the nunit.framework.dll and UnityEngine.TestRunner.dll libraries to the Assembly Definition.
includePlatforms 字符串数组 For the Editor test, this list of platforms must include the "Editor" platform.

Tip: You can also edit the assembly definition files in the Inspector. Refer to Assembly Definitions for more information.

Editor 文件示例

The editor test .asmdef file looks like this:

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

运行时文件示例

The runtime test .asmdef file looks like this:

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

为包启用测试

对于嵌入式包,不需要显式启用测试,因为嵌入式包正在开发中。

但是,对于其他类型的依赖项,则需要向项目清单添加 testables 属性,并添加包含待运行测试的包名称。这包括项目的直接依赖项和间接依赖项。例如:

{
  "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"]
}

This example adds tests for the com.unity.some-package and com.unity.other-package packages in Unity’s Test Framework package.

Note: You might need to import the package again, because the test framework doesn’t always immediately pick up changes to the testables attribute.

包布局
为资源包创建示例