与任何类型的开发一样,向您的包中添加测试是一个好习惯。要在您的包上设置测试,您必须执行三件事
您可以将测试文件添加到包的 Editor
和 Runtime
子文件夹中的 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.dll 和 UnityEngine.TestRunner.dll 库的引用添加到程序集定义中。 |
includePlatforms | 字符串数组 | 对于 Editor 测试,此平台列表必须包含 "Editor" 平台。 |
提示:您也可以在检查器一个 Unity 窗口,显示有关当前选定的游戏对象、资源或项目设置的信息,允许您检查和编辑值。更多信息
请参阅术语表中编辑程序集定义文件。有关更多信息,请参阅程序集定义。
编辑器测试 .asmdef
文件如下所示
{
"name": "MyCompany.MyPackage.Editor.Tests",
"references": [
"MyPackage.Editor",
"MyPackage"
],
"optionalUnityReferences": [
"TestAssemblies"
],
"includePlatforms": [
"Editor"
],
"excludePlatforms": []
}
运行时测试 .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-package 和 com.unity.other-package 包的测试。
注意:您可能需要再次导入包,因为测试框架并不总是立即获取对 testables
属性的更改。