本日は Unity の小ネタ枠です。
最新のUnityTestFrameworkのPlayModeテストでasync/awaitでテストコードを書く手法を記事にします。
UnityTestFrameworkのPlayModeテスト
UnityTestFramework の PlayMode テストに関する基本的な利用手順は以下の記事を参照ください。
bluebirdofoz.hatenablog.com
PlayMode で非同期のテストを実施する場合、前回記事では yield return を活用していました。
今回 UnityTestFramework のバージョン 1.3 以降では async test がサポートされていることを知ったのでこれを試してみます。
docs.unity3d.com
UnityTestFrameworkのバージョン1.3のインポート
UnityTestFramework で async test を利用する場合はバージョン 1.3 以降のインポートが必要です。
メニューから[Window -> Package Manager]を開いて[In Project]のパッケージを確認すると、現在インポートしている UnityTestFramework のバージョンが確認できます。
今回のプロジェクトでは UnityTestFramework のバージョンが 1.1 と古かったので 1.3 のインポートを行います。
[+]ボタンから[Add package from git URL...]を選択します。
URLの入力欄が開くので以下の通り入力して[Add]ボタンをクリックします。
com.unity.test-framework@1.3
これでバージョン 1.3 を指定して UnityTestFramework をインポートできました。
テストサンプル
テストサンプルを作成しました。
以下のようにテストを記述することで async/await を利用したテストが作成できます。
・NewTestScript.cs
using System.Threading.Tasks; using NUnit.Framework; public class NewTestScript { // 以下の通り async でテストを書くことができる // このテストは、5秒待機してからTrueを返すWaitSample.WaitSecondsが正常に動作するかを確認する [Test] public async Task WaitSampleTestAsync() { var waitSample = new WaitSample(); var result = await waitSample.WaitSeconds(5); Assert.IsTrue(result); } }
[Test Runnder]ダイアログを開き、[Run All]でテストを実行してみます。
以下の通り、async/await で非同期処理のテストが簡単に実施できました。