+ All Categories
Home > Technology > Unity で Unit な Test を書いてみた

Unity で Unit な Test を書いてみた

Date post: 16-Apr-2017
Category:
Upload: mori-tetsuya
View: 170 times
Download: 1 times
Share this document with a friend
52
Unity で Unit な Test を 書いてみた 2016.09.02 (Fri) / Unity 勉強会 #40 株式会社キッズスター CTO 森 哲哉
Transcript

Unity で Unit な Test を 書いてみた

2016.09.02 (Fri) / Unity 勉強会 #40

株式会社キッズスター CTO 森 哲哉

こんばんは!

"自己紹介がアホみたいに

長い!"

でお馴染みの もんりぃです!

ご多分に漏れず 今日も長いです!

今日は

UT

UNIQLO T-Shirt

じゃなくて

Unit Test

の、おはなしです。

おしながき

おしながき• UnitTest の概要

• UnitTest の準備

• UnitTest の実行

• IntegrationTest について

• まとめ

さて、お待ちかねの

自己紹介

whoami

• “森 哲哉” と申します

• a.k.a: もんりぃ / T: @monry / F: monry84

• 31歳 / ♂ / O型 / 天秤座 / 既婚

• 趣味は「お酒」と「合唱」です

whoami• 大学を (自主的に) 卒業後、ベンチャーを転々

• Web のフロントエンド、サーバサイドが得意

• Unity 歴 3 年くらい

• Cocos2d-x も触ってます

• インフラ (AWS) も、ちょいちょいやってます

• 最近 Ruby on Rails に興味津々

jobs• “株式会社キッズスター” って会社で働いてます

• 未就学児~小学生のお子さまをお持ちのファミリーをターゲットにした、知育/教育に関わるアプリ・サービスを展開しております

• 「IID 世田谷ものづくり学校」という、元中学校に入居しております

office

office

office

office

apps

なりきり!! ごっこランド

パズル&テイルズおかしのくにを つくるのじゃ!!

なりきり!! アイスクリーム 屋さんごっこ

なりきり!! ママごっこ

お弁当をつくろう!

おかしの家を つくろう!

ハンバーガー やさんごっこ

飛行機を 組み立てよう!

i18n i18n i18n

i18n

ゆかいな お花屋さん

App Store / Google Play

カテゴリランキング1位

多数獲得!!!

きかんしゃ トーマスと

パズルで あそぼう!

キョロちゃん 大冒険

キョロちゃん 海の大冒険

ハローキティズ ラボ

events

events

events

今度こそ、本題

UnitTest の概要

UnitTest - 概要

• 日本語で言うと「単体テスト」

• 「機能の挙動」テスト

• ≠「アプリの挙動」テスト

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 の準備

UnitTest - 準備

• インストール

• Unity 5.3 未満の人は AssetStore から

• Unity 5.3 以上の人は組み込み済

UnitTest - 準備

• テストスクリプト作成

• [ Menu ] > [ Assets ] > [ Create ] >[ Editor Test C# Script ]

• Project ビューのコンテキストメニューからでも OK

UnitTest - 準備

UnitTest - 準備

• テストスクリプト実装

• 雛形が生成されているので、それに倣う

UnitTest - 準備

• Test Runner 起動

• 専用の Window が用意されている

• [ Menu ] > [ Window ] >[ Editor Tests Runner ]

UnitTest - 準備

UnitTest の実行

UnitTest - 実行

テストケース一覧

全テスト実行

結果詳細

選択中のテストを実行失敗したテストのみ実行

テストケースのフィルタ

UnitTest - 実行

• 正しく準備出来ているテストケースが Test Runner のテストケース一覧に列挙される

• ウィンドウ左上のボタン押下でテスト実行

UnitTest - 実行• こんな感じ

UnitTest - 実行• Fail したテストケースの詳細

UnitTest - 実行

DEMO

おまけ

おまけ - バッチモード• コマンドラインからもテスト実行できます

• つまり Jenkins とかからも実行できます

• /Applications/Unity/Unity.app/Contents/MacOS/Unity -projectPath /path/to/project \ -runEditorTests

• 詳しくはコチラ

おまけ - Integration Test• 結合試験とか統合試験とか呼ばれる

• 複数の機能の連携を検証する

• まだ標準組み込みにはなっていない

• MultiScene 絡みで難しいのかな?

• Roadmap にも載ってないんだよなぁ…。

• 詳しくはこちら

まとめ

まとめ

• UnitTestsRunner 登場以降、かなり楽にテストを書けるようになった

• 共通クラスやゲームデータに関するモデルクラス なんかを書く時は積極的にテスト書こう!

• IntegrationTest もそれなりにヨサソウ

Thank you foryour attention !!

Any Questions ?


Recommended