FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

QUnit+jQueryで、チンチロリンゲーム自動実行テストプログラムを作った

先日機能追加したチンチロリンのゲームを、ちょこちょことテストしている。
function単位の単体テスト以外に、自動実行させて動作確認するテストも行った。

せっかくなので、QUnit+jQueryで作った自動実行テストプログラムをアップした。
ccrmain.js full action Test
ccrmain.js full action Test
(ページを開くといきなり動き出します。HTML5 Canvasをサポートしていないブラウザでは正しく表示されません。
テストシナリオが崩れるので、ゲームのボタンは押さないでください)
右側にテスト結果が表示される。正常なら青になる。

テストを実行するJavaScriptソースは以下。
ccrActionTest.js (文字コードはUTF-8)

テストプログラムの流れを簡単に解説する。
1. $(window).load の実行を待つ
asyncTest("wait for onload", function() {...}); の部分
asyncTest()で、$(window).load が実行されるまで待つ。
asyncTest()でのイベント処理テストについては、QUnit & jQuery でイベント起動処理のテストを行う を参照。

2. ランダム処理部分を上書き
test("replace method", function() {...}); の部分
最初の親とサイコロの目はランダムに決めている。
シナリオに従って動作するよう、該当メソッドを上書きしている。

3. サイコロを振って、振り終わるのを待ってスコアチェック
jQueryのclick()などでイベント発行してサイコロを振る。
asyncTest()で、サイコロを振り終わるまで待つ。
次の親がプレイヤー(3Dサイコロ)のときは処理が勝手に進んでしまうので、asyncTest()内でメインループを止める処理を実行して処理を止めている。

今回のテストプログラムではスコアをチェックしているだけで、Canvasの表示結果は目視でチェックしている。
getImageDataなどを使ってCanvasの表示内容をチェックできそうだが、そこまでする気にはならない。
「asyncTest()内でメインループを止める処理を実行」は、ゲームの自動実行テストにいろいろと使えそうだが、clearIntervalなどが発行されるまでタイムラグがあることを考慮する必要がある。
スポンサーサイト

コメント

コメントの投稿

非公開コメント

プロフィール

himax64

Author: 南西
30代後半の無職です。
就活もせずダラダラ生きてます。
作ったもの

最新記事
人気記事
検索フォーム
カテゴリ
月別アーカイブ
最新コメント
最新トラックバック
RSSリンクの表示
QRコード
QRコード
カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。