LoginSignup
11

More than 3 years have passed since last update.

Unity TestRunner(PlayMode)のアセンブリ参照問題

Last updated at Posted at 2018-09-06

あまり触れてる人はいないが、Unity2018における「Unity TestRunner」は、アセンブリの観点から3つの設定がある。

  • デフォルト状態
  • Test Assemblies を有効にした Assembly Definition を配置したフォルダ以下にテストスクリプトを置いた状態
  • TestRunnerの右上の設定で、「Enable play tests for all assemblies」を設定した状態(Assembly Definion不要)

まず、デフォルト状態は、そもそも必要なテストライブラリが読まれないので使えない

スクリーンショット 2018-09-06 21.06.32.png

これ、何も知らないと、コンパイルエラーでNUnit参照がないとか言われるのなんでだー?
で小一時間悩むことに...

故に、実質 2つ目 or 3つ目 になるわけだが、2つ目は小規模なプロジェクトやライブラリ開発以外では辛くなることが多く、どうせ採用するのは 3つ目の案 になる。

ちなみに 2つ目 がなぜ辛いかと言うと、Assembly分割( = DLL分割)と同じ制約を受けるからである。
すなわち、Assembly-CSharp.dllに含まれる実装をテストコード側から参照できない。
テストする実装は全て、独自のAssemblyに分割し、それをテストのAssemblyから参照させる必要があると言う、理想主義のソレ。

ただ、3つ目も問題点がないわけではなく、テストコードがAssembly-CSahrp.dllに含まれてしまうという点が問題。
なんらかのマクロ定義などで、リリースビルドでストリップさせる仕組みをちゃんと入れなくてはいけない。
まぁでも普通にデバッグコードをストリップしたりは出来るようにしてる筈なので、その流れで普通の人はできるよなぁ!?

スクリーンショット 2018-09-06 21.11.57.png

ちなみに右上の設定ってここ。なんでこんな重要な設定メニューがここにあるんだ...


ということで、プロジェクトを作ったら、TestRunnerのパネルから、設定を忘れずにしよう & ストリップする仕組みをいれたテストスケルトンを用意しておこう。

あと、TestRunnnerの詳しい話は変にセンセーショナルな記事を読むくらいなら、本家をあたった方がよいです。
https://docs.unity3d.com/2018.1/Documentation/Manual/testing-editortestsrunner.html

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11