UE4で単体テストしてみよう!

はじめに

GameServerDevelopersという勉強会に参加してきました!
あんまりサーバーとかよくわからないですが、いろいろ勉強になりました!
この高揚が収まらないうちに全く関係ない記事を書き終えようと思います!
それでは、UE4とC++にて単体テストを書いていきましょう!

環境

Windows10
Visual Studio 2015
Unreal Engine 4. 11.2

ソースファイルの作成

[プロジェクト名]/Private/Testsフォルダを作成してその階層化にMyTest.cppを作成します。
このファイルにテストをこれから実際に書いていきます。
ヘッダーファイルも同時に作成した場合は、特に使うことはないのでゴミ箱にポイしてください。

[プロジェクト名]/Private/Tests/MyTest.cpp

プログラムを書いてみる

MyTest.cpp

// 単体テスト用マクロ
// このマクロを書くことで単体テスト用のクラスが生成される
IMPLEMENT_SIMPLE_AUTOMATION_TEST( FMyTest, "FMyTest.Hello World", EAutomationTestFlags::EditorContext | EAutomationTestFlags::ProductFilter );

bool FMyTest::RunTest( const FString& Parameters )
{
    // ここにテストを記述していく
    return true;
}

テストを実行してみる

f:id:u16kuma:20160528235146p:plain

右のほうの矢印のプルダウンメニューからProduct Testsを選択してあげることで今回作成したテストが見やすくなると思います。

今回作成したテストの左に表示されているチェックボックスにチェックを入れてテストを実行してみましょう!

以下のウィンドウが表示されAutomation Test Succeded (Hello World)と表示されれば成功です!

f:id:u16kuma:20160528235144p:plain

テストのフィルターをProduct Tests以外に変更したい場合は、IMPLEMENT_SIMPLE_AUTOMATION_TESTの引数にあるEAutomationTestFlags::ProductFilterを変更することで変えることができます。

注意点

コンパイルしてからエディターを再起動しないと反映されません。
変更してコンパイルしたけど作成したテストが表示されない、テストを書き換えたけど結果が反映されない、といったことがあった場合はコンパイルして再起動してみることをおすすめします。

まとめ

一度使い方がわかってしまえばよい機能ではあるのだけれども、公式ドキュメントを見ても書いてほしいことが書いてなくて地味に悩んだ。
あとテスト用のソースファイルの自動生成が存在しないのはなぜ?