どのような開発でもそうですが、パッケージにテストを追加するのは良いことです。パッケージにテストを設定するには、以下の 3 つを行う必要があります。
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 ファイルが含まれている必要があります。アセンブリ定義ファイルは、テストアセンブリファイルへの参照も提供します。詳細については、テスト用アセンブリ定義ファイル を参照してください。
Test Framework パッケージを使用して、アセンブリ定義ファイルを作成または編集します。詳細については、テストアセンブリの作成 を参照してください。
アセンブリ定義ファイルを直接編集することを選択できますが、必ず以下の参照を加えてください。
| 属性 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | ファイル拡張子を除いたアセンブリの名前。 |
| references | 文字列の配列 | エディターとランタイムのアセンブリへの参照。アセンブリ定義ファイルは、テストのタイプによって異なる参照が必要です。 - エディターテストの場合は、パッケージのエディターアセンブリとランタイムアセンブリへの参照を加えます。 - ランタイムテストの場合は、パッケージのランタイムアセンブリのみへの参照を追加します。 |
| optionalUnityReferences | 文字列の配列 | アセンブリをテストアセンブリとするには、この Unity 参照のリストに "TestAssemblies" を加える必要があります。これにより、nunit.framework.dll ライブラリと UnityEngine.TestRunner.dll ライブラリへの参照がアセンブリ定義に追加されます。 |
| includePlatforms | 文字列の配列 | エディターテストの場合は、このプラットフォームのリストに "Editor" プラットフォームを加える必要があります。 |
ヒント: インスペクターでアセンブリ定義ファイルを編集することもできます。詳細については、アセンブリの定義 を参照してください。
エディタテスト .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": []
}
埋め込みパッケージの場合は開発中のため、明示的にテストを有効にする必要はありません。
ただし、他の種類の依存関係に対しては、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"]
}
この例では、Unity の Test Framework パッケージに com.unity.some-package と com.unity.other-package パッケージのテストを加えています。
ノート: Test Framework が testables 属性の変更をすぐに反映するとは限らないので、パッケージを再度インポートする必要があるかもしれません。