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

Unity testtool

  • Upload
    -

  • View
    4.147

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Unity testtool

テキスト

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

Page 2: Unity testtool

Unityにおけるテスト

Page 3: Unity testtool

Unity Test Tools

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

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

Page 4: Unity testtool

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

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

Page 5: Unity testtool

Unit Test

Page 6: Unity testtool

準備するもの

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

被単体用テストクラス

テスト用コード

Page 7: Unity testtool

Unity Test Tool

Page 8: Unity testtool

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

Page 9: Unity testtool

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

Page 10: Unity testtool

被単体テスト用クラス

Page 11: Unity testtool

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

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

Page 12: Unity testtool

テスト用コード

Page 13: Unity testtool

準備

Page 14: Unity testtool

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

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

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

Page 15: Unity testtool

属性付与

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

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

Page 16: Unity testtool

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

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

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

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

Page 17: Unity testtool

テスト用コード

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

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

Page 18: Unity testtool

テスト用コード

Page 19: Unity testtool

テスト用コード

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

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

Page 20: Unity testtool

テスト用コード

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

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

Page 21: Unity testtool

テスト用コード

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

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

Page 22: Unity testtool

実行方法

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

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

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

Page 23: Unity testtool

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

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

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

Page 24: Unity testtool

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

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

Jenkinsで呼び出すことも可能

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

Page 25: Unity testtool

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