Unityの標準テストフレームワークであるUnity Test Frameworkパッケージでは、非同期のテストをコルーチン様式で書くことのできる UnityTest
属性が提供されています。
この UnityTest
属性にはいくつか制限事項があり、WebGL Playerで実行できないことは公式ドキュメントにも以前から書かれていました。
具体的な振る舞いは以前記事に書きました。
しかしいつの間にか公式ドキュメントから記述が消えており*1、確認してみたところ、(Unity Test Frameworkではなく)Unityエディター側の修正によって解消されていました。
該当するバグチケットはこちらです*2。
Fixed in 2020.3.42f1, 2021.3.8f1, 2022.1.12f1, 2022.2.0b3, 2023.1.0a4
とあり、実際にUnity 2021.3.8f1で動作することが確認できました*3。
また UnitySetUp
および UnityTearDown
属性も同様に動作しました。
なお、Unity Test Frameworkはv1.3.2を使用しています。
また、テスト実行結果がUnityエディターのTest Runnerウィンドウに反映されない(プログレスバーが止まったままとなりキャンセルするしかない)問題も解消していました。
なお、拙書『Unity Test Framework完全攻略ガイド 第2版』ですが、昨年末に増刷したときにも本件に気づいておらず、「5.4 UnityTest属性の制限」にはWebGL Playerで動作しないと書いてあります。 今後の改版時に対応予定です。
サンプルコードのほうは対応(WebGL Playerでの実行制限を削除)していますが、masterブランチはUnity 2019 LTSを維持しています。 WebGL Playerでの実行は前述のUnityバージョンにアップグレードしてお試しください。
非同期(async)テストはWebGL Playerで動作しない
蛇足です。
Unity Test Framework v1.3でサポートされた非同期(async)テストは引き続きWebGL Playerで動作しません*4。
当面はこれまでの UnityTest
属性のテスト同様、UnityPlatform
属性でWebGL Playerでの実行を抑止するしかなさそうです。