4.21前回の記事で自動テストツールの使い方をご紹介しました。今回は、C++で独自のテストを追加する方法をご紹介したいと思います。1.テストを構成するクラスについてテストの実装のために重要なクラスは2つあります。テストから実行されるコマンドの基底クラスですこれらのクラスを継承して独自のテストを作成しますが、通常は直接クラスを記述することはせずに、予め用意された下記のようなマクロを利用します。2.SimpleTestもっとも基本的なテストは、SimpleTestと呼ばれます。マクロを使用してクラスを定義し、関数を1つ実装すれば完了です。RunTest関数の戻り値がテスト結果となります。引数のParametersはSimpleTestでは使用しません。いった関数が用意されており、これらを使用することでもエラーチェックが可能です。3.ComplexTestComplexTestは、同じテストを複数の対象に対して実行する場合に使用します。全てのブループリントをコンパイルする、全てのレベルを読み込む、などです。定義はSimpleTest同様、ComplexTest定義用のマクロを利用します。ComplexTestでは2つの関数を定義する必要があります。GetTests関数で対象を列挙し、対象毎にRunTest関数が呼び出されます。GetTests関数の第一引数がツール表示名、第二引数がRunTest関数に渡される文字列になります。"11111");}上記の2つのテストを追加した状態でAutomationツールを起動し、テストを実行してみると、下記のような結果になります。4.LatentCommandの使用ここまでの方法でテストの追加は行えましたが、複数フレームに跨って実行されるようなテストには対応出来ません。そのような場合は、RunTestからLatentCommandを登録します。LatentCommandを登録しておくと、RunTestの実行後に順次実行されていきます。登録されたLatentCommandが全て実行し終わった時点で、テストの実行が終了となります。FEngineWaitlatentCommandは指定秒数待つLatentCommandで、FExecStringLatentCommandはコンソールコマンドを実行するLatentCommandです。LatentCommandの登録には、ADD_LATENT_AUTOMATION_COMMANDマクロを使用します。下記の例では、テスト開始から3秒後にスクリーンショットを保存します。true;}5.LatentCommandの追加もちろん、LatentCommandも独自に実装することが可能です。テストと同様にマクロを使用してクラスを定義し、Update関数を記述します。Update関数は、コマンドの実行を終了する場合はtrueを、次フレームも引き続き実行する場合はfalseを返します。テストの成否ではないので注意して下さい。LatentCommand実行中にエラーや警告を出すには、UE_LOGを使用します。エラーが発生しても、テストの実行は中断されません。エラーを出したとしても、プログラムをクラッシュさせないように注意が必要です。ここで指定したパラメータは、クラスのメンバ変数として実装され、コンストラクタ引数で初期化され、Update関数内から利用できます。