Choose your operating system:
Windows
macOS
Linux
テストの作成
テストのセットアップは、 Functional Test アクタをレベルに配置すればできます。このアクタは、 Level ブループリント の レベルスクリプト によって、一連のテストを実行するようにスクリプティングすることができます。テスト自体は、 Functional Test そのものに組み込むか (子コード クラスまたはブループリントで)、レベル スクリプトで直接アセンブルすることができます。
Functional Test クラス機能
Functional Test クラスには、以下の重要な関数があります。
関数名 |
説明 |
---|---|
|
|
|
この関数は最初の`PrepareTest
|
|
Functional Testing Manager
がテストを開始すると、このデリゲートが呼び出されます。これをテスト機能にバインドし、最後に必ず
|
|
テストが終了すると、このデリゲートが呼び出されます。テストは多くの場合、レベルやレベル内のアクタに影響を及ぼし、その影響は後続のテストに影響を及ぼすため、この機会にクリーンアップすることは利用可能なテスト環境を維持するうえで極めて重要です。 |
Functional Test クラスには、以下の補助的な機能があります。
関数名またはプロパティ名 |
説明 |
---|---|
|
補足情報をテスト サマリーに記録する手段として、
|
|
この関数に渡されるアクタは、テスト終了時に自動的に破棄されます。テストの一環としてスポーンされたアクタをクリーンアップするのにお勧めの方法です。 |
|
この関数は、入力したテキストを
Output Log
の
|
Observation Point |
アクタにこのプロパティを割り当てると、プレイヤーはテスト開始時にその位置と回転にテレポートします。 |
Enabled |
この変数を
|
レベルスクリプトによるテスト
レベルスクリプトで機能テストを実行するには、まず Functional Test アクタをレベルに配置します。Functional Test を選択した状態で、レベルスクリプトを開き、
OnTestStart
デリゲートと Functional Test への参照を配置します。Functional Test のピンからドラッグして、ひとつ以上の
FinishTest
ノードを作成することができます。この時点でテストをビルドして、
OnTestStart
デリゲートを
FinishTest
ノード (またはテストのブランチが含まれる場合は複数のノード) に接続させることができます。テストが何らかのクリーンアップを必要とするものの場合、
OnTestFinished
関数も作成することができます。このセットアップが完了すると、自動化システムによってこのテストを適切に実行することができます。この方法は簡易テストでは許容できますが、一般的にほとんどセットアップを必要としないか、まったく必要としないものは、複数回実行または複数のレベルで実行する必要はありません。
または
子クラスのメソッドによるテスト
機能テストでさらに複雑なセットアップが必要な場合や、複数回実行することを意図している場合 (単一レベルまたは複数レベル)、
AFunctionalTest
をオーバーライドすることをお勧めします。ベースとなる Functional Test クラスをコードまたはブループリントで拡張すると、
PrepareTest
関数と
IsReady
関数を使用できるようになります。これは、一段と複雑なテストや相互依存するテスト、セットアップ時間が 1 フレームよりも長いテストを実行するうえで非常に重要です。レベルスクリプトでこうしたテストを実装するのは、これまでと同じですが、大量のテスト コードを、レベルスクリプトではなくこの新しい Functional Test クラス自体に入れられるようになり、複数レベル、または同じレベル内で複数回でのテストの使用が簡単になりました。
望ましいテスト結果を作成し、使用する
一部のテスト結果は、大量、複雑、厳密すぎたり、手書きのコードによるソリューションには不適切な場合があります。このような場合、単一のテストを実行するのが役立ちますが、個人的には結果が正確であることを確認し、こうした結果を保存し、将来のテスト結果と比較できるようにします。このコンセプトは Functional Testing Editor プラグインの Ground Truth Data として実装されます。
Ground Truth Data
のコンセプトは、
UGroundTruthData
クラスで実装され、こうした結果を保存し、比較するために使用されます。Ground Truth Data Object は、選択したオブジェクトを実行中のテストの正しい結果として格納します。次にこのオブジェクトを、ライブシミュレーションの対応するオブジェクトと比較して、ロジックがテストの合否を判断します。例えば、ゴルフ ゲームなどゲームが正確で信頼できる物理シミュレーションを必要とする場合、シミュレートするプレイヤーがホールインワンを出すようなテストを行うかもしれません。Ground Truth Data (正確さを整合するためのデータ) にはオブジェクトとしてゴルフ ボールが含まれ、ライブ シミュレーションのゴルフ ボールの位置を、保存してあるもの (ホールに入ったものを想定) と比較することが可能で、テストに不合格になることなく、ごく小さなエラーだけが許容されます。こうしたテストは以下のように設計することができます。
-
テスト用のゴルフ ボールを任意の位置に初期のべロシティでスポーンします。移動には一定の長さの時間を与えます。この時点では、ゴルフ ボールは理想的な位置にあるはずです。このテストの Ground Truth Data から正確なゴルフ ボールを読み込むことができます。
-
Ground Truth Data が許容可能なオブジェクトを戻さない場合 (例、戻されたオブジェクトが null か、誤ったクラスの場合)、Ground Truth Data に作成したテストのゴルフ ボールを期待される結果として保存してください。ゴルフ ボールが到達すべき場所に行かなかった場合、ブループリント エディタで
ResetGroundTruth
変数を手動でfalse
ResetGroundTruth
-
Ground Truth Data が必要なクラス (この例では、Actor で十分です) にキャストできるオブジェクトを戻す場合、このオブジェクトとテスト用のゴルフ ボールとの比較で、テストの合否を評価することができます。
この方法でのテストのセットアップでは、テストを実行し、期待されるテスト結果を同じスクリプトで設定することができます。期待される結果は、エディタで Ground Truth Data を編集することでリセットすることができます。