Unity Test Runner は、Edit (編集) モードと Play (再生) モードでコードをテストするツールです。また、スタンドアロン、Android、iOS などのターゲットプラットフォーム上でも同様にテストできます。
Unity Test Runner にアクセスするには、Window > General > Test Runner の順に選択します。
Unity Test Runner は NUnit ライブラリの Unity インテグレーションを使用します。NUnit ライブラリは .Net 言語用のオープンソースのユニットテストライブラリです。NUnit の詳細は、NUnit の公式ウェブサイト と GitHub の NUnit ドキュメント を参照してください。
UnityTestAttribute は、Unity Test Runner の標準の NUnit ライブラリへの主要な追加機能です。これは、テスト内からフレームをスキップできるタイプの単体テストです (これにより、バックグラウンドタスクを完了できます)。
Play モード: UnityTestAttribute
を コルーチン として実行します。
Edit モード: UnityTestAttribute
を EditorApplication.update コールバックループで実行します。
Unity Test Runner には、いくつかの既知の問題と制限があります。
WebGL と WSA プラットフォームは UnityTestAttribute
をサポートしません。
UnityTest
は パラメーター化されたテスト をサポートしません (ValueSource
を除きます)。
このページは、単体テストと NUnit についてすでに理解していることを前提としています。NUnit を初めて使用する場合、または詳細情報が必要な場合は、GitHub の NUnit ドキュメント を参照してください。
Unity Test Runner を開くには、Unity を開き、Window > General > Test Runner の順に移動します。プロジェクトにテストがない場合は、Create Test Script in current folder ボタンをクリックして、基本的なテストスクリプトを作成します。テストスクリプトを加えるとコンパイルエラーが発生する場合は、このボタンはグレー表示されます。テストスクリプトを加えるための条件は、Editor フォルダー、またはテストアセンブリ (NUnit、Unity Test Runner、ユーザースクリプトアセンブリ) を参照する Assembly Definition (アセンブリ定義) ファイルを使用するフォルダーにあります。
Assets > Create > C# Test Script の順に移動して、テストスクリプトを作成することもできます。テストスクリプトを加えるとコンパイルエラーが発生する場合は、このオプションは無効になっています。
ノート: 通常のビルドパイプラインを使用する場合、テストアセンブリ (NUnit、Unity TestRunner、ユーザースクリプトアセンブリ) は含まれませんが、Test Runner ウィンドウで “Run on <Platform>” を使用する場合は含まれます。
Edit モードでは、Unity は Test Runner ウィンドウからテストを実行します。
Edit モードのテストスクリプトは、スクリプトを配置するファイルの場所によって定義されます。有効な場所は以下の通りです。
プロジェクトの Editor フォルダー
エディターのみのテストアセンブリを参照する Assembly Definition (アセンブリ定義) ファイル
プロジェクトの Editor フォルダーにある事前コンパイルされたアセンブリ
EditMode ボタンをクリックしてから、Create Test Script in current folder (現際のフォルダーでテストスクリプトを作成) をクリックして、基本的なテストスクリプトを作成します。必要に応じて、これを任意のスクリプト編集ソフトウェアで開いて編集します。
ノート: Edit モードで実行している場合は、EditorApplication.update コールバックループで UnityTestAttribute を実行します。
アセンブリ定義ファイルが含まれるフォルダーに Play モードのテストスクリプトを配置する必要があります。アセンブリ定義ファイルは、テストアセンブリ (Nunit と Unity TestRunner) を参照する必要があります。事前に定義された Unity アセンブリ (Assembly-CSharp.dll など) は、定義されたアセンブリを参照しません。このアセンブリ定義ファイルは、さらにテストするアセンブリを参照する必要もあります。つまり、他のアセンブリ定義ファイルで定義されたコードのみをテストすることが可能です。
Unity では通常のプレイヤービルドにテストアセンブリは含まれません。Test Runner を実行する場合のみ、含まれます。事前に定義したアセンブリでコードをテストする必要がある場合は、すべてのアセンブリからテストアセンブリを参照できます。 ただし、後でこれらのテストを手動で削除して、Unity がそれらを最終的なプレイヤービルドに加えないようにする必要があります。
手順は以下のとおりです。
プロジェクトを保存します。
Window > General > Test Runner の順に選択します。
ウィンドウの右上にある小さなドロップダウンをクリックします。
Enable playmode tests for all assemblies (すべてのアセンブリの再生モードのテストを有効にする) をクリックします。
表示されたダイアログボックスで、OK をクリックしエディターを手動で再起動 します。
ノート: すべてのアセンブリの PlayMode のテストを有効にすると、プロジェクトのビルドに追加のアセンブリが加えられ、プロジェクトのサイズとビルド時間が増加する場合があります。
PlayMode テストスクリプトを作成するには、Test Runner ウィンドウで [PlayMode] を選択し、Create Test Script in current folder (現在のフォルダーにテストスクリプトを作成) をクリックします。 スクリプトを追加するとコンパイルエラーが発生する場合は、このボタンはグレー表示されます。
ノート: Play モードで実行する場合は、UnityTestAttribute を コルーチン として実行します。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.