こんにちは、株式会社Leon Gameworksの遠藤です。

今回はEditor Utilityの少し特殊な使用例として、Editor Utilityを用いた自動テストを作成したいと思います。

記事の目次

    0:動作環境

    本記事はUE5.5.3を基に執筆しており、エディタの言語は「英語」でスクリーンショットを撮影しております。

    本記事で作成するツールのプロジェクト一式のデータは、以下からダウンロードできます。

    今回のプロジェクトデータ

    1:自動テストについて

    まずはUE5の自動テストについて少し解説します。

    UE5では自動テストのツールとして、Automation SpecGauntlet Automation Frameworkなどの機能が用意されていますが、今回はその中でも一番ベーシックな機能であるAutomation Testingを用いてテストを作成します。

    メインメニューの[Tools]から[Session Frontend]を立ち上げます。

    ▲ Session Frondend

    立ち上げたら[Automation]タブを開きます。

    ▲Automationタブ

    ここにはエンジンやプロジェクトで定義されたテストが並んでおり、テストしたい項目にチェックを入れて再生ボタンを押すと順番に実行されます。

    ▲再生ボタン

    テストはブループリントやC++で独自のものを作成して登録することが可能です。今回は、ここに登録するテストをEditor Utilityを用いて作成していきたいと思います。

    2:Editor Utilityを用いてテストを作成

    まずは「Editor Tests」プラグインを有効化します。

    ▲「Editor Tests」プラグイン

    エディタを再起動し、コンテンツブラウザにてEditor Utility Blueprint(EUB)を作成します。親クラスには「EditorUtilityTest」を選択します。

    ▲EditorUtilityTest

    アセット名は「EUB_MyTest」とします。

    ▲「EUB_MyTest」

    「EditorUtilityTest」を継承して作成したEditor Utility Blueprintは、自動的にAutomation Testingに登録されます。

    ▲自動登録されたテスト

    アセットを開くと「Event PrepareTest」と「Event StartTest」が配置されています。これらのイベントに処理を繋いでテストを作成します。

    ▲「EditorUtilityTest」のイベント

    今回は、選択中のテクスチャアセットの解像度が一定サイズを超えていたら警告を出すようなテストを作成していきます。

    まずは選択中のアセットを取得し、「Texture2D」でキャストします。

    ▲選択中のアセットの取得

    テクスチャのサイズを取得し「2,048」以上であるかチェックします。

    ▲テクスチャの解像度をチェック

    チェック後に、2,048を超えているものは「Add Warning」に繋ぎ、テクスチャのアセット名を渡します。

    ▲「Add Warning」

    For文の実行後に「Finish Test」関数を繋ぎます。テスト終了時には必ず「Finish Test」を実行する必要があります。

    ▲「Finish Test」

    これでテストの完成です。テクスチャアセットを選択した状態で実行してみましょう。

    ▲テストの実行

    解像度が「2,048」を超えているテクスチャがログに表示されました。今回は「Add Warning」を使用しましたが、「EditorUtilityTest」ではいくつかメッセージログ用の関数が用意されており、実行するとログを出すと同時にテストの結果にも反映させてくれます。

    ▲メッセージログ用の関数

    3:まとめ

    いかがでしたでしょうか?

    今回作成したテストに関しては、単体ではEditor Utility Blueprintをそのまま使用するのと変わりなく、テストである必要性は薄いですが、何か別のテストと連続してEditor Utilityを実行したいなどのケースでは活用できると思います。

    株式会社Leon Gameworks

    ●公式サイト
    www.leon-game.co.jp

    ●X(Twitter)
    @Leon_Gameworks

    トンコツ(遠藤俊太)

    ●トンコツ開発ブログ
    shuntaendo.hatenablog.com

    ●X(Twitter)
    @tonkotsu3656

    TEXT_トンコツ(Leon Gameworks)
    EDIT_小村仁美 / Hitomi Komura(CGWORLD)、オムライス駆