Unity Test Frameworkによるテストを書くときに便利な Test Helper パッケージの v1.4.0 をリリースしました。
本バージョンでは、ビジュアルリグレッションテストなどに便利なカスタム比較子 FlipTexture2dEqualityComparer を追加しました。
FlipTexture2dEqualityComparer
FlipTexture2dEqualityComparer は、2つの Texture2D を制約モデルで検証するときに使用できる比較子(comparer)です。
次のように使用します。
[Test] public async Task MyTestMethod() { // テスト実行(省略) // スクリーンショットを撮影 await Awaitable.EndOfFrameAsync(); var actual = ScreenCapture.CaptureScreenshotAsTexture(); // 期待する画像をロード var expected = AssetDatabase.LoadAssetAtPath<Texture2D>(ExpectedImagePath); // 比較子を使って検証 var comparer = new FlipTexture2dEqualityComparer(meanErrorTolerance: 0.01f); Assert.That(actual, Is.EqualTo(expected).Using(comparer)); }
通常、オブジェクト同士を Is.EqualTo で比較すると参照の比較になりますが、Using モディファイアで比較子を渡すことで比較方法を指定できます。
FlipTexture2dEqualityComparer はFLIP(後述)を使用して2つの Texture2D を比較し、平均エラー値がしきい値(上例では 0.01f)より高ければテストを失敗させます。
また失敗時には、エラー値から生成したマップファイルを出力します。差異の大きいところが暖色になるマグママップ(ヒートマップ)です。

FlipBinding.CSharp
FlipTexture2dEqualityComparer を使用するには、Test Helperパッケージのほかに、FlipBinding.CSharp NuGetパッケージのインストールが必要です。
FlipBinding.CSharp は、FLIP(後述)の C#バインディングAPIで、株式会社サイバーエージェント SGEコア技術本部が公開しているOSSです。
Windows, macOS, Linuxで動作します。
FlipBinding.CSharp は、UnityNuGet(OpenUPM)もしくは NuGetForUnity からインストールできます。
UnityNuGet および NuGetForUnity の使いかたは次の記事を参照してください。
なお、UnityNuGet(OpenUPM)以外 からインストールしたときは、カスタムスクリプティングシンボル ENABLE_FLIP_BINDING の設定も必要です。
FLIP
FLIP は、NVIDIA Research Projects が公開している画像比較アルゴリズムです。 Python および C++ 実装がOSSとして公開されています。
FLIP は人間の目が認識する差異を評価してくれるアルゴリズムで、従来手法のようにパラメタ調整に悩むことなく、しきい値の決定だけで精度の高いビジュアルリグレッションテストを運用できるのが特徴です。 FLIP によるビジュアルリグレッションテストについて詳しくは、次の清原氏によるブログ記事および CEDEC 2025 の講演資料が参考になります。
Unity Test Framework によるテストについては同人誌を頒布していますので、こちらも参考にしてください。