unity で unit な test を書いてみた
TRANSCRIPT
whoami
• “森 哲哉” と申します
• a.k.a: もんりぃ / T: @monry / F: monry84
• 31歳 / ♂ / O型 / 天秤座 / 既婚
• 趣味は「お酒」と「合唱」です
whoami• 大学を (自主的に) 卒業後、ベンチャーを転々
• Web のフロントエンド、サーバサイドが得意
• Unity 歴 3 年くらい
• Cocos2d-x も触ってます
• インフラ (AWS) も、ちょいちょいやってます
• 最近 Ruby on Rails に興味津々
jobs• “株式会社キッズスター” って会社で働いてます
• 未就学児~小学生のお子さまをお持ちのファミリーをターゲットにした、知育/教育に関わるアプリ・サービスを展開しております
• 「IID 世田谷ものづくり学校」という、元中学校に入居しております
apps
なりきり!! ごっこランド
パズル&テイルズおかしのくにを つくるのじゃ!!
なりきり!! アイスクリーム 屋さんごっこ
なりきり!! ママごっこ
お弁当をつくろう!
おかしの家を つくろう!
ハンバーガー やさんごっこ
飛行機を 組み立てよう!
i18n i18n i18n
i18n
ゆかいな お花屋さん
App Store / Google Play
カテゴリランキング1位
多数獲得!!!
きかんしゃ トーマスと
パズルで あそぼう!
キョロちゃん 大冒険
キョロちゃん 海の大冒険
ハローキティズ ラボ
UnitTest - 概要
• 2013年末に AssetStore で公開
• Unity Technologies 謹製
• Unity 5.3 から標準組み込み
• 内部的には NUnit 利用
UnitTest - 概要• Editor スクリプトとして記述
• using NUnit.Framework;
• [Test] 属性をメソッドに付与
• メソッド可視性は何でも OK っぽい
• namespace も利用可能
UnitTest - 概要• GameObject (など) のライフサイクルイベントは呼ばれない
• Awake とか Start は呼ばれない
• Coroutine も使えない
• 基本的に 1メソッド 1Assert が良さそう
UnitTest - 準備
• テストスクリプト作成
• [ Menu ] > [ Assets ] > [ Create ] >[ Editor Test C# Script ]
• Project ビューのコンテキストメニューからでも OK
UnitTest - 準備
• Test Runner 起動
• 専用の Window が用意されている
• [ Menu ] > [ Window ] >[ Editor Tests Runner ]
おまけ - バッチモード• コマンドラインからもテスト実行できます
• つまり Jenkins とかからも実行できます
• /Applications/Unity/Unity.app/Contents/MacOS/Unity -projectPath /path/to/project \ -runEditorTests
• 詳しくはコチラ
おまけ - Integration Test• 結合試験とか統合試験とか呼ばれる
• 複数の機能の連携を検証する
• まだ標準組み込みにはなっていない
• MultiScene 絡みで難しいのかな?
• Roadmap にも載ってないんだよなぁ…。
• 詳しくはこちら
まとめ
• UnitTestsRunner 登場以降、かなり楽にテストを書けるようになった
• 共通クラスやゲームデータに関するモデルクラス なんかを書く時は積極的にテスト書こう!
• IntegrationTest もそれなりにヨサソウ