SlideShare a Scribd company logo
1 of 19
Download to read offline
FlexUnitで
ユニットテスト
あらかじめおことわり
• FlashBuilderでの方法だけ書いてます
• 知ってる人からみると、必要最低限にも満たない基準のテスト
方法かも

(とはいえ、そう書くと初学者が不安になるのもまた事実なの
で、あくまでとっかかりに必要なフックと考えてもらえれば…)
• というかオレオレテストファースト過ぎる考え方
• 手順とかはググればみつかるけど、いざどういったテストコー
ドを書いたらいいか検討がつかないといった人向け
手順
• ファイルのところで右クリック

→「新規」→「テストケースクラス」

でテストが作れます
• テストケースは「flexUnitTests」パッケージ以下
に放り込んでおくといいと思う(というかデフォル
トでそうなってます)
画面見本
こんなのが出来る
	 	 [Before]	
	 	 public function setUp():void	
	 	 {	
	 	 }	
	 	 	
	 	 [After]	
	 	 public function tearDown():void	
	 	 {	
	 	 }	
	 	 	
	 	 [BeforeClass]	
	 	 public static function setUpBeforeClass():void	
	 	 {	
	 	 }	
	 	 	
	 	 [AfterClass]	
	 	 public static function tearDownAfterClass():void	
	 	 {	
	 	 }
こんな風に書き足してく
	 	 [Test]	
	 	 public function test1():void	
	 	 {	
	 	 }	
	 	 	
	 	 [Test]	
	 	 public function test2():void	
	 	 {	
	 	 }	
	 	 	
	 	 [Test]	
	 	 public function test3():void	
	 	 {	
	 	 }
最終的にテストケースクラス
はこうなるpackage flexUnitTests	
{	
	 public class AssetManSampleTest	
	 {	 	 	
	 	 [Before]	
	 	 public function setUp():void	
	 	 {	
	 	 }	
	 	 	
	 	 [After]	
	 	 public function tearDown():void	
	 	 {	
	 	 }	
	 	 	
	 	 [BeforeClass]	
	 	 public static function setUpBeforeClass():void	
	 	 {	
	 	 }	
	 	 	
	 	 [AfterClass]	
	 	 public static function tearDownAfterClass():void	
	 	 {	
	 	 }	
	 	 	
	 	 [Test]	
	 	 public function test1():void	
	 	 {	
	 	 }	
	 	 	
	 	 [Test]	
	 	 public function test2():void	
	 	 {	
	 	 }	
	 	 	
	 	 [Test]	
	 	 public function test3():void	
	 	 {	
	 	 }	
	 }	
}
タグの意味
• [BeforeClass]

テストケースクラスが動作する最初に実行される関数。static
• [AfterClass]

テストケースが終了する最後に実行される関数。static
• [Before]

それぞれのTestが実行される前に実行される関数
• [After]

それぞれのTestが実行された後に実行される関数
動作のイメージ
• [BeforeClass]実行
• [Before]実行
• [Test]test1実行
• [After]実行
• [Before]実行
• [Test]test2実行
• [After]実行
• [Before]実行
• [Test]test2実行
• [After]実行
• [AfterClass]が実行
• ※ただし、BeforeClassとAfterClassはstaticで実行されること、

それぞれの[Before][Test][After]はインスタンスとして並列処理されること

に注意しないといけない(つまりこの説明がよくわからなかったらBeforeClassとAfterClassは使わないほうが無難)
便利ショートカット
option + Shift + A、その後 f

プロジェクト内のFlexUnitを全てテスト
option + shift + e、その後 f

選択したFlexUnitをテスト
普段は二番目の「個別に選択したテスト」のほうが実
行させること多い と思います。
テストから戻れなくなった!
• Command+F11でデバッグしても、FlexUnitテス
トばかり立ち上がって、普通の開発中のアプリがデ
バッグできなくなった! 

→デバッグの構成を切り替えます。
• メニュー「実行」→「デバッグの構成」→ダイアログ画
面の左側「モバイルアプリケーション」 から実行したい
構成を選択することで切り替わります。
非同期処理
• あんまり整理できてない
• [Before(async)]とか[Test(async)]とか、非同期処理させたい
ところはasyncオプション付ける
• イベントリスナー系で駆動させたい場合

Async.proceedOnEvent
• コールバック関数系で駆動させたい場合

Async.asyncHandler
• あたりで使い分ける?ごめん、この曖昧さがひよこ的
テストファースト
• 順番の話しではない
• 考え方の話し
• ぼくがかんがえたさいきょうにうつくしいクラスせっけい v.s. テストのためにコードが汚くな
る

なら、テストのためにコードが多少汚くなったほうがまだマシ、という話し
• テストしやすいコードを突き詰めていったらコードが綺麗になる場合も多いけど、逆にテスト
のためにコードが汚くなる場合もある。多少コードが汚くなっても、必要なテストならするべ
しという考え(ちょっと違うか)
• テストしやすいコードを心がける

→まず、テストありきという考え方

であって、作業手順としての順番がテストが先、という話しではないことに注意
• テストありきという考え方を進めていったら、結果的に手順としてもテストコード書くのが先
になった、という話しであれば問題ないんだけど、初学者はその段階にまだ立ってない
ぶっちゃけFlashでユニット
テストしなくていいもの
• ボタンが押されたら次のシーンにちゃんと遷移するか

→充分にテストされたフレームワーク使えばおk
• ちゃんとaddChild/removeChildされているか

気持ちいい動きか

→表示系は、Flashではテストしなくてもいい。そのかわ
り、その表示を何度でも簡単に行える仕組みを作って、そち
らで何度でも目視で作り込みをしていく
• 表示・UI系は、やはりFlashは何度でもクリエイターが調整
できることが強みなので、そこは工夫してわけておく
テストしたほうがいいもの
• 15日の18:00に押せなくなるボタン

→2014/11/15 18:00ならfalseを返す関数を作る

→それをテストする

→テストしやすいように、引数をもらってtrueかfalse
か返す関数にする

 テストしやすいように関数を作る、ってのがポイント

→2014/11/15 17:59:59ならtrueかテスト

→2014/11/15 18:00ならfalseかテスト

→ 0 , などを引数で渡してテスト
テストしたほうがいいもの
• ページャー

→10件ずつ表示(LIMIT 10)

→OFFSET 0 ,10, 20, 30, 40…と続く配列を生成する関数を作る

→このとき、n件ずつ表示できるように引数を指定できるようにする

→何ページ目かが配列のインデックスと同期するので、指定された配列の要素を返す関数を作る

→指定ページが配列の先頭か、もしくは最後かを返す関数を作る
• →50件あるとき、配列のlengthはちゃんと5あるかテスト

→53件のとき6かテスト

→ロジックに不安があれば、59件60件でも6かテスト61件なら7になるかテスト
• →50件あるとき、3ページ目ならOFFSET 20が帰るかテスト

→このとき内容が10件あるかテスト

→23件あるとき、3ページ目ならOFFSET 20が帰り、内容が3件あるかテスト

→19件あるとき、3ページ目指定したらエラーになるかテスト
• 指定ページが配列の開始と終了をちゃんと返すかテスト

テストしたほうがいいもの
• ステージの幅によって、等間隔に10個並ぶオブジェ
クト

→ステージの幅とオブジェクトの幅、並ぶ個数を渡
すと間隔を返す関数を作成
• →ステージ幅500の場合、オブジェクト幅20で10
個並べたら、33.333が帰るかテスト
テストしたほうがいいもの
• ゲームのルール部分とか

→同じ色が3つ並んだらtrue
• コンテンツで、想定していない動きや入力があった
らどうなるか
• 複雑な組み合わせや回数が必要なもの

More Related Content

What's hot

Test the web forward に行きました。
Test the web forward に行きました。Test the web forward に行きました。
Test the web forward に行きました。Shuichi Takaya
 
デグレを防ぐテストの書き方
デグレを防ぐテストの書き方デグレを防ぐテストの書き方
デグレを防ぐテストの書き方Wataru Terada
 
単体テストのすゝめ
単体テストのすゝめ単体テストのすゝめ
単体テストのすゝめLi Satoshi
 
Getting Started with Testing using PHPUnit
Getting Started with Testing using PHPUnitGetting Started with Testing using PHPUnit
Getting Started with Testing using PHPUnitAtsuhiro Kubo
 
WordPressのテストとデバッグ方法
WordPressのテストとデバッグ方法WordPressのテストとデバッグ方法
WordPressのテストとデバッグ方法Tsuyoshi.
 
効果の低いテストの話
効果の低いテストの話効果の低いテストの話
効果の低いテストの話bleis tift
 

What's hot (7)

Test the web forward に行きました。
Test the web forward に行きました。Test the web forward に行きました。
Test the web forward に行きました。
 
デグレを防ぐテストの書き方
デグレを防ぐテストの書き方デグレを防ぐテストの書き方
デグレを防ぐテストの書き方
 
単体テストのすゝめ
単体テストのすゝめ単体テストのすゝめ
単体テストのすゝめ
 
Getting Started with Testing using PHPUnit
Getting Started with Testing using PHPUnitGetting Started with Testing using PHPUnit
Getting Started with Testing using PHPUnit
 
WordPressのテストとデバッグ方法
WordPressのテストとデバッグ方法WordPressのテストとデバッグ方法
WordPressのテストとデバッグ方法
 
効果の低いテストの話
効果の低いテストの話効果の低いテストの話
効果の低いテストの話
 
PHP agile test tips
PHP agile test tipsPHP agile test tips
PHP agile test tips
 

More from utweb

動くサイトにプログラムが必要な時代は終わった。〜デザイナー歓喜のAnimate CCとSpineの紹介
動くサイトにプログラムが必要な時代は終わった。〜デザイナー歓喜のAnimate CCとSpineの紹介動くサイトにプログラムが必要な時代は終わった。〜デザイナー歓喜のAnimate CCとSpineの紹介
動くサイトにプログラムが必要な時代は終わった。〜デザイナー歓喜のAnimate CCとSpineの紹介utweb
 
StarlingAssetmanagerの説明
StarlingAssetmanagerの説明StarlingAssetmanagerの説明
StarlingAssetmanagerの説明utweb
 
Flashアニメーションの書き出し
Flashアニメーションの書き出しFlashアニメーションの書き出し
Flashアニメーションの書き出しutweb
 
StarlingをFlexUnitで ユニットテストしてみる。
StarlingをFlexUnitで ユニットテストしてみる。StarlingをFlexUnitで ユニットテストしてみる。
StarlingをFlexUnitで ユニットテストしてみる。utweb
 
FlashBuilderでスマホアプリ開発
FlashBuilderでスマホアプリ開発FlashBuilderでスマホアプリ開発
FlashBuilderでスマホアプリ開発utweb
 
disneak
disneakdisneak
disneakutweb
 

More from utweb (6)

動くサイトにプログラムが必要な時代は終わった。〜デザイナー歓喜のAnimate CCとSpineの紹介
動くサイトにプログラムが必要な時代は終わった。〜デザイナー歓喜のAnimate CCとSpineの紹介動くサイトにプログラムが必要な時代は終わった。〜デザイナー歓喜のAnimate CCとSpineの紹介
動くサイトにプログラムが必要な時代は終わった。〜デザイナー歓喜のAnimate CCとSpineの紹介
 
StarlingAssetmanagerの説明
StarlingAssetmanagerの説明StarlingAssetmanagerの説明
StarlingAssetmanagerの説明
 
Flashアニメーションの書き出し
Flashアニメーションの書き出しFlashアニメーションの書き出し
Flashアニメーションの書き出し
 
StarlingをFlexUnitで ユニットテストしてみる。
StarlingをFlexUnitで ユニットテストしてみる。StarlingをFlexUnitで ユニットテストしてみる。
StarlingをFlexUnitで ユニットテストしてみる。
 
FlashBuilderでスマホアプリ開発
FlashBuilderでスマホアプリ開発FlashBuilderでスマホアプリ開発
FlashBuilderでスマホアプリ開発
 
disneak
disneakdisneak
disneak
 

Recently uploaded

5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一瑛一 西口
 
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用KLab Inc. / Tech
 
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計atsushi061452
 
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。iPride Co., Ltd.
 
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdfネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdfTakayuki Nakayama
 
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521Satoshi Makita
 
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑Akihiro Kadohata
 
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアルLoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアルCRI Japan, Inc.
 
Keywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdKeywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdkokinagano2
 
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員Sadaomi Nishi
 
Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )iwashiira2ctf
 
情報を表現するときのポイント
情報を表現するときのポイント情報を表現するときのポイント
情報を表現するときのポイントonozaty
 
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperleger Tokyo Meetup
 
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイルLoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイルCRI Japan, Inc.
 

Recently uploaded (14)

5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
 
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
 
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
 
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
 
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdfネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
 
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
 
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
 
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアルLoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
 
Keywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdKeywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltd
 
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
 
Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )
 
情報を表現するときのポイント
情報を表現するときのポイント情報を表現するときのポイント
情報を表現するときのポイント
 
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
 
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイルLoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
 

FlexUnitテスト