Version: 2022.2
言語: 日本語
パッケージレイアウト
パッケージのサンプルの作成

パッケージにテストを追加する

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. パッケージのテストを有効にします

テストファイルの場所

Editor と Runtime サブフォルダー内のパッケージの Tests フォルダーにテストファイルを加えます。例えば、テストを持つ単純なパッケージは以下のようになります。

MyPackage
  ├── package.json
  ├── Editor
  │     ├── MyPackage.Editor.asmdef
  │     └── EditorExample.cs
  ├── Runtime
  │     ├── MyPackage.Runtime.asmdef
  │     └── RuntimeExample.cs
  └── Tests
        ├── Editor
        │    ├── MyPackage.EditorTests.asmdef
        │    └── EditorExampleTest.cs
        └── Runtime
             ├── MyPackage.RuntimeTests.asmdef
             └── RuntimeExampleTest.cs

これらの各サブフォルダーには .asmdef ファイルが含まれている必要があります。このファイルはエディターとランタイムアセンブリへの参照を提供します。アセンブリ定義ファイルは、テストアセンブリファイルへの参照も提供します。詳細は、テスト用アセンブリ定義ファイルを参照してください。

テスト用アセンブリ定義ファイル

アセンブリ定義ファイルを直接編集できます。以下の参照を必ず加えてください。

属性 説明
name 文字列 ファイル拡張子を除いたアセンブリの名前。
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.

ヒント: インスペクターでアセンブリ定義ファイルを編集することもできます。詳細はアセンブリ定義を参照してください。

エディターファイルの例

以下は、エディターテスト .asmdef ファイルの例です。

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

ランタイムファイルの例

以下は、ランタイムテスト .asmdef ファイルの例です。

{
  "name": "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.

パッケージレイアウト
パッケージのサンプルの作成