Nodachisoft Nodachisoft logo, Katana Sword Icon
  
@あまじ✎ 2022年1月11日に更新

Unity で複数のTestsフォルダを Unity Test Runner が認識してくれない時の対処方法

Unity で複数のTestsフォルダを Unity Test Runner が認識してくれない時の対処方法

概要

Unity 2020.3 LTS バージョンにて、複数のTests フォルダに分けてテストコードを作成したとき、 Unity Test Runner が認識してくれなかったときの対処方法を記載しています。

以下のような構成でテストコードを作成しているとき、一つのテストフォルダ配下しか認識してくれなかった時があり、解決するために確認したことを記載しています。

Directories And Files

上記のように2つの Tests フォルダ配下にそれぞれ必要なテストコードを作成していましたが、 片方の Tests フォルダしか認識してくれません。

Window -> General -> Test Runner で Unity Test Runner を開くと以下のように、NodachiFrameowork 配下の Tests しか認識していません。

UTF

確認

Unity Test Runner では Edit Mode と Play Mode の2種類のテストモードがあり、 2つの Tests フォルダ配下に、それぞれ Edit Mode でのテストコードを格納しています。

Tests フォルダにはテスト実行時に必要とするアセンブリ定義ファイルが格納されており、 その設定がおかしい可能性があります。

とりあえず Unity Editor 上でアセンブリ定義ファイルをクリックして画面上の Inspector を確認してみます。

ちゃんと認識してくれる Tests フォルダ配下のアセンブリ定義ファイルと認識してくれない Tests フォルダ配下のアセンブリ定義を比較してみます。

platform

微妙に違いました。画像の左は、Unity Test Runner 上から最初に Create EditMode Test Assembly Folder ボタンを押して作成した Tests フォルダ配下に自動的に作成されたアセンブリ定義ファイルです。 画像の右は Unity Editor の Project ウィンドウ上で右クリック -> Craete -> Testing -> Tests Assembly Folderで作成されたアセンブリ定義ファイルにの Edit Mode にチェックを入れたものです。

差異

注意深くみればもう判るのですが、 Tests として認識されないアセンブリ定義ファイルのほうは、Exclude Platforms とジャンル名が異なります。

platform

ということで、Edit Mode を除外する設定となってしまっていました。

修正

アセンブリ定義ファイルはテキスト形式ですので、直接 エディタで開き編集できます。

以下、編集前。ハイライト部分を修正しました。

Ng_TestsAssembly.asmdef
{
    "name": "XxxxTests",
    "rootNamespace": "",
    "references": [
        "UnityEngine.TestRunner",
        "UnityEditor.TestRunner",
        "テストに必要なパッケージ"
    ],
    "includePlatforms": [],
    "excludePlatforms": [
        "Editor"
    ],
    "allowUnsafeCode": false,
    "overrideReferences": true,
    "precompiledReferences": [
        "nunit.framework.dll"
    ],
    "autoReferenced": false,
    "defineConstraints": [
        "UNITY_INCLUDE_TESTS"
    ],
    "versionDefines": [],
    "noEngineReferences": false
}

以下は修正後です。

OK_TestsAssembly.asmdef
{
    "name": "XxxxTests",
    "rootNamespace": "",
    "references": [
        "UnityEngine.TestRunner",
        "UnityEditor.TestRunner",
        "テストに必要なパッケージ"
    ],
    "includePlatforms": [
        "Editor"
    ],
    "excludePlatforms": [],
    "allowUnsafeCode": false,
    "overrideReferences": true,
    "precompiledReferences": [
        "nunit.framework.dll"
    ],
    "autoReferenced": false,
    "defineConstraints": [
        "UNITY_INCLUDE_TESTS"
    ],
    "versionDefines": [],
    "noEngineReferences": false
}

アセンブリ定義ファイルを修正した後、Unity Test Runner を確認すると、 無事に、修正したフォルダ配下のテストコードが認識されました。

utf_ok.png

参考

変更履歴

日付 変更概要
なし
 
 
送信しました!

コメント、ありがとうございます。

なんかエラーでした

ごめんなさい。エラーでうまく送信できませんでした。ご迷惑をおかけします。しばらくおいてから再度送信を試していただくか、以下から DM などでご連絡頂ければと思います。

Twitter:@NodachiSoft_jp
お名前:
 
連絡先:
 
メッセージ:
 
戻る
内容の確認!

以下の内容でコメントを送信します。よろしければ、「送信」を押してください。修正する場合は「戻る」を押してください

お名前:
 
連絡先:
 
メッセージ:
 
Roboto からの操作ではないという確認のため確認キーを入れてください。
確認キー=95
戻る
 / 
送信確認へ
コメント欄
コメント送信確認へ

関連ありそうな記事(5件)です!

Unity の C# コードで System.Type.GetType が null を返してしまう

Unity の C# コードで System.Type.GetType が null を返してしまう

#Unity#.net✎ 2022-1-11
Unity の C# コードで System.Type.GetType が null を返してしまう
目次
Unity で複数のTestsフォルダを Unity Test Runner が認識してくれない時の対処方法
Unity で複数のTestsフォルダを Unity Test Runner が認識してくれない時の対処方法
概要
概要
確認
確認
差異
差異
修正
修正
参考
参考
変更履歴
変更履歴
Nodachisoft © 2021