Unity testtool

Preview:

Citation preview

テキスト

Unityにおけるテストパターン束田 大介

Unityにおけるテスト

Unity Test Tools

Unity Technologiesから公開されているテストツール

2013年に公開されたが、実際の導入はまだ浸透してない

搭載されている機能Unit Test - メソッド単位での挙動の確認

Integration Test - アプリの挙動テスト

Unit Test

準備するもの

Unity Test Tool ( Asset Storeからインポート )

被単体用テストクラス

テスト用コード

Unity Test Tool

AssetStoreAssetStoreで最新のリリース版が配布されているので、ダウンロード後インポート

BitBucketUnity Technologiesからリポジトリが公開されていますので、ここから最新版を取得してもよい

被単体テスト用クラス

被単体用テストクラス実装されているのは、初期化用の構造体とbool、intの返り値をもったメソッドLessThanXとXPlusY。

それぞれのメソッドを、2つのケースでテストします

テスト用コード

準備

テスト用コードの配置場所

UnityEditorとして機能させるので、必ずEditorフォルダに入れておく

Editorとして扱うが、namespaceのUnityEditorの宣言は不要

属性付与

テスト用コードには、クラス、各メソッドに属性を付与します

引数に付与する属性もあります

属性付与[Test] テスト用メソッドであることを示します。

[TestCase] InitializeTestでテストする値を渡します。テストケースの数だけ属性を記述します。

[Values] 引数に与える値を並べて指定することができます。

[Range] 引数に与える値を範囲と条件を指定することができます。

テスト用コード

被テスト用クラスと同じだけのテスト用メソッドを準備します

引数の値に応じてテストを行うよう設定する

テスト用コード

テスト用コード

InitializeTestメソッドに、整数1と2を渡した場合と、−1と−100を渡した場合にエラーがないかのテストになります

仮にTestClassのx,yがfloatだった場合、エラーが返ってきます

テスト用コード

こちらのテストメソッドは、それぞれの引数に、Valuesにセットした値を渡し、すべての条件分のテストを行います

テストないの条件値、TestClassを呼び出した結果にエラーがなければこのテストはOKといった結果になります( Assert.AreEqual(xLess, testClass.LessThanX(a)); )

テスト用コード

この場合は少々複雑で、1~10のレンジで2つおきの値を引数とした条件と、1~2のレンジでカウントした値のすべての条件でテストを行います

xとyにそれぞれ値が入っていて計算ができ、かつtestClass.XPlusYTestから値が返ってきているかの条件を満たした場合OKとします

実行方法

事例としてはJenkinsから、Unityのバッチモードで実行させる事を想定していました

定期的、もしくはリポジトリにコミットがあった場合にバッチモードでテストを実行を想定

今回は基本的な実行方法をご紹介します

実行方法Unity5でのウインドウになってしまっていますが、RunAllを押すと、すべてのテストが開始されます

UnityTestでエラーが出ていますが割愛します

MyTestの結果を見るとすべての値が成功していますが、かかった時間もウインドウ下部に表示されています

実行方法テスト結果に関しては、Xmlにて出力することも可能

以下のコードはWindows用ですが、アプリケーションの指定、保存先のファイルパスを変更する形で実行可能

Jenkinsで呼び出すことも可能

>Unity.exe -batchmode -projectPath PATH_TO_YOUR_PROJECT -executeMethod UnityTest.Batch.RunUnitTests -resultFilePath=C:\temp\results.xml

ご静聴ありがとうございました