Open2

【Unity】テスト関連のメモ

nitonito

非同期処理のテスト

コルーチン

UnityTestFramworkで非同期処理をテストしたい場合,UnityTest属性を用いる.
EditModeテストで扱える非同期処理はyield return nullに限られる.その他の待機処理はテスト自体が失敗扱いとなる.

上記の制約から基本的に非同期処理を扱う場合はRuntimeテストにすべきと思われる.

UniTask

UniTaskをそのまま扱うことはできないため,UniTask.ToCorutine()でコルーチンに変換する必要がある.メソッド全体をコルーチンに変換してしまえば,async/awaitで記述できる.

[UnityTest]
public IEnumerator UniTaskTest() => UniTask.ToCoroutine(async () => { // コルーチンへ変換
    var cts = new CancellationTokenSource();

    // 待機処理
    await UniTask.Delay(1000, cancellationToken : cts.Token);
        :
});

https://qiita.com/Euglenach/items/c9f2ccf38a05efcba8d8