Home > | , , > [FlexUnit] 〜テストの拳〜 世紀末終わったけど、Flashまだ終わってないし、あべし言いたくないし、FlexUnitでテストする?

[FlexUnit] 〜テストの拳〜 世紀末終わったけど、Flashまだ終わってないし、あべし言いたくないし、FlexUnitでテストする?

  • 2013-04-23 (火) 9:05
  • ���̃G���g���[���͂Ăȃu�b�N�}�[�N�ɒlj�

200X年!世界はSNSの炎に包まれた!

Tweenは枯れGraphicsは裂け・・・・・・あらゆるノウハウが絶滅したかにみえた

・・・・・・だが

・・・Flashは死に絶えてはいなかった!!

別に伝承するほどでもなく、簡単だったFlexUnit

SNSの登場とスマホアプリの普及、もはやAPIを叩かない日はなくなりました。そしてAIRやゲーム用途への接近によるFlashのアプリ化が起きています。しかし、制作はいまだレガシーな根性スタイルであることが多いかと思います。

とはいえ普段の開発では「ダミーのボタンを作ってAPIとの通信をテストする」というテストもどきをやってると思います。

テスト駆動開発とはそれを体系立ててやるだけです。ルールがあるぶん、むしろ楽だったりします。

ながれ

  1. testフォルダをつくる
  2. テストコードを書く
  3. Run/Debug Configurations(実行の構成)にてテストランナーの設定
  4. テストを走らせる!

うん、むずかしくない!

あべしと言わせるテスト(奥義)を書こう!

 [Test]
 public function 絶叫テスト():void {
    Assert.assertEquals('あべし', zako.断末魔());
 }

これだけ!簡単!Functionの上に[Test]って書くだけでテストコード! 伝承しやす!
でも!読みにくい!なにこれ!

さっそくテスト(奥義)も覚えたし、もうちょっと読みやすいテスト(奥義)を書こう

さっきのテスト(奥義)を日本語化すると

「’あべし’はzako.断末魔()を実行したときに期待される値である」

と、なんだかとても読みにくい。

なので、hamcrestというライブラリを使うと↓みたいな書き方になる。

assertThat(zako.断末魔(), equalTo(‘あべし’))

「zakoが断末魔()すると、’あべし’になる」

となり、こっちのほうが読みやすいね!

ちなみに、テスト(奥義)は最初に一発目は必ず失敗するのがルールなので、シンとかサウザーのことを思い出してやってください。

非同期のテスト(奥義)をしよう!

あんまり覚えたくないのでひとつだけ覚えよう!

image

 [Test(async, timeout='1000', description='お前はもう死んでいる')]
 public function 非同期のテスト():void
 {
      var context:Object = {};
      var you:Function = Async.asyncHandler(
          this, function (event:FlexEvent, ctx:Object):void {
               assertThat(context.result, equalTo('死んでいる'))
          }, 1000);

      var timer:Timer = new Timer(500, 1);
      timer.addEventListener(TimerEvent.TIMER, function(e:*):void{
          contenxt.result = '死んでいる'
          you();
      });
      timer.start();
 }
  1. metaデータに[Test(async)]を入れる (これは奥義じゃない)
  2. Async.asyncHandlerで待ち状態にする (秘孔をつく)
  3. 非同期が終わったら、Async.asyncHandlerで作った非同期待ち関数を叩く (決め台詞をいう)
  4. おわり (死んでいる)

非同期なときのassertcontextみたいなオブジェクトを作って受け渡しするいい感じにテストできるかと思います。

これ以外にも非同期のメソッド(経絡秘孔)はあるみたいだけど、とりあえずこれ(奥義)を一つ覚えたらいいんじゃないかな。

以下、IntelliJ IDEA(すごい伝承者)でテストを走らせるやりかた

FlashBuilder(アミバ)でもだいたい同じかと思われます。IntelliJ IDEAもFlashBuilderもFlexUnit(奥義)を簡単に使えるようになってるので、この上なく楽です。

FlashDevelop派のひとはこちらの記事がよさげ

–ここからIDEAでの設定–

  1. Testディレクトリの設定
  2. Run/Debug Configuration (実行の構成)
  3. できたら実行ボタンを押す

1.Testディレクトリの設定

testディレクトリを作る→右クリでMark as → Test Source Root

testディレクトリ

ここにテストコードを書いたクラスをほりこんでいきます

2.Run/Debug Configuration (実行の構成)

実行の構成
実行の構成の追加。FlexUnitを追加する。

testディレクトリ
FlexUnitの設定

  • All in Package → パッケージ内の[Test]が書かれてるやつを全部実行
  • Classかスイートの実行
  • メソッド単位で実行

普段はパッケージ単位かClass単位で設定してテストをすると、実行時間も短くて楽です。

3.できたら実行ボタンを押す!

右下にFlexUnitの実行結果が出る!ここがグリーンのバーならOK
成功

失敗すると赤になる
失敗

IDEAでのtraceのだしかた

ながれ

  1. Run/Debug Configurations → Optionsでログが出るようにする
  2. 実行をすると、ログが見れる
    • (デバッグ実行では出力されたり、されなかったりと不安定)

やりかた

Run/Debug Configurations → Optionsでログが出るようにする
config

デバッグでなく、実行をする(Shift + F10)
config

すると、エラーでテストが止まったときにもログが出る。

テストに16秒くらいかかることがある→デバッグ実行でなおる

config
さっきまで2秒前後で終了していたものが、突然16秒になることがある。

そのときはデバッグ実行をすると直る。

これで救世主になれたかな?

これだけテスト(奥義)できるようになったら、もう、まちがいなくバグはない!!

なので「バグってます」と言われたら、こう言い返そう!

image

つぎの世紀末まで、いっしょにがんばろう!

Trackbacks (Close):3

pingback from teraco - 【web系勉強会】大阪てら子47「webの技術でつくってあそぼ」 13-05-08 (水) 1:00

[…] […]

trackback from sex 14-09-12 (金) 17:46

”sex”~

[FlexUnit] 〜テストの拳〜 世紀末終わったけど、Flashまだ終わってないし、あべし言いたくないし、FlexUnitでテストする? | スーパー肩パッドの大開発者養成ブログ

trackback from GangLand White Boy Stomp 14-09-23 (火) 13:44

”GangLand White Boy Stomp”~

[FlexUnit] 〜テストの拳〜 世紀末終わったけど、Flashまだ終わってないし、あべし言いたくないし、FlexUnitでテストする? | スーパー肩パッドの大開発者養成ブログ

Home > | , , > [FlexUnit] 〜テストの拳〜 世紀末終わったけど、Flashまだ終わってないし、あべし言いたくないし、FlexUnitでテストする?


Search
Feeds
Meta

Return to page top