UnityTestRunnerでasync/awaitを利用できるようにする方法

こんばんは、カカポンです。

UnityTestRunnerってそのままだとNunitが古くてasync/awaitが使えないそうです💦

ですが、CySharpのCTOさんである neueccさんのツイートによると...

写真を見る限りUniTaskを導入すれば、UnityTestRunnerでもasync/awaitが使えるようです✨

というわけで、私も早速試してみることにしました。

①UniTaskを導入する

github.com

こちらからリリースページに行って、unitypackageをダウンロードするのが簡単だと思います。

②UniTaskをコード上で使えるようにする。

using Cysharp.Threading.Tasks; が必要になります。

Assemblyを分割している人は Assembly Difinition ReferencesUniTaskを追加しましょう。

③Testを作る

テストの形式は こんな感じになります。

public IEnumerator TestXXX() => UniTask.ToCoroutine(async () =>
{
    // Act
    var xyz = await AsyncFunc();
        
    // Assert
    Assert.AreEqual("xyz return data",  xyz);
});

これでasync/awaitのテストができるようになりました。😄