9/25, 26に開催されたUnite Tokyo 2019の『Unity Test Runnerを活用して内部品質を向上しよう』というセッションで、Unity Test RunnerがUnity 2019.2からpackage化されたことをお話ししました。
その際、以下の情報をいただいたので確認してみました。
2019.2 だとテスト関連の asmdef を参照させないとダメかな? #UniteTokyo #RoomD
— もんりぃ先生 (@monry) September 26, 2019
なお、本セッションのスライドはすでにUnity Learning Materialsで公開中。動画は後日公開される予定です。
learning.unity3d.jp togetter.com
セッション全体のフォローアップ記事はこちら。
Unity 2019.2のAssembly Definition Files
Unity 2019.2でのAssembly Definitionは次のようにインスペクタに表示されます。
たしかに"Test Assemblies"のチェックボックスは無くなり、かわりにUnityEngine.TestRunner
およびUnityEditor.TestRunner
への参照が追加されています。
しかし実際のasmdefファイルの中身は下記の通りで、Unity 2019.1以前と変わっていませんでした。Unity 2019.1以前からのマイグレーションでも、新規に作ったasmdefでも同様です。
{
"name": "UniteSample-Test-EditMode",
"references": [
"UniteSample",
"UniteSample-Editor"
],
"optionalUnityReferences": [
"TestAssemblies"
],
(snip)
}
このあたりはUnityエディタのインスペクタ上の表示仕様であり*1、package化されたUnity Test Frameworkのバージョンには依存しないと思われますので、これ以上は追求しないことにします。
Play mode tests用テストコードを格納するフォルダとasmdefファイルは、Projectウィンドウで右クリック > Create > Testing > Tests Assembly Folder で作ることができます*2。
Edit mode tests用フォルダは、以下いずれかの方法で作ることができます【9/30修正】
- パスに/Editor/を含むフォルダ(asmdefファイル不要)
- 任意のフォルダにasmdefを置き、Platformsの"Editor"をonにする*3
なお、UnityEngine.TestRunner
およびUnityEditor.TestRunner
は、Unity Test Frameworkパッケージに含まれるアセンブリです。名称から、Play mode tests用とEdit mode tests用に分かれているように見えますが未検証です。
Rider Integrationとの相性
Unity 2019.2から、JetBrains Rider Integrationもpackage化され、プロジェクト内にpluginを置く必要がなくなりました*4。
しかし、このRider Editor(com.unity.ide.rider)はTest Framework(com.unity.test-framework)に依存しており*5、バージョンの相性がありますので注意しましょう。
確認した範囲では、Rider Editorのバージョンを1.1.1に上げるとき、Test Frameworkも1.1.3以上に上げる必要があるようです。