AS3Unit: ActionScript 3.0上JUnit4の移植、単体テストを行うためのフレームワーク

AS3Unitとは、JUnit4の移植、ActionScript 3.0上で単体テストを行うためのオープンソースのフレームワークです。

Javaの開発者なら良く知ってるはずだと思いますが、JUnit4Javaで開発されたプログラムにおいてユニットテスト(単体テスト)の自動化を行うためのフレームワークです。次はWikiPedia上に挙げられているJUnitが推奨される理由:

一度作成すればすばやくテスト可能である。

その後はテストコードを標本とすることでバグ訂正が容易となる。

テストコードを見れば仕様が一目瞭然となる。

誰でも同じテストを行えるようになる。

独自のテストコードによるテスト作成の手間を省ける。

とても便利ですね。同じで、AS3Unitを用いる事で、効率よくテスト駆動開発を行うことが出来るようになります。

AS3Unit-Actionscript-3-Junit-for-Flash

【導入方法】

●Flex Builder の場合

1、Flex Builder上で、AS3Unitを使用したいプロジェクトを開くか、作成します。

2、プロジェクトのプロパティを表示し、「ActionScript ビルドパス」内の「ライブラリパス」タブを開きます。

3、「SWCの追加」をクリックし、表示されたダイアログ内で、ダウンロードした「as3unit-xxx.swc」(xxxはバージョン)を指定して追加します。

4、「OK」を押して設定を保存すれば完了です。これでAS3Unit(org.libspark.as3unitパッケージ)が使えるようになります。

●FlashCS3 の場合

1、Adobe Extension Manager のインストールが済んでいない場合、インストールします。

2、使用しているOSにあわせて、「as3unit-1.2-win.mxp」または「as3unit-1.2-mac.mxp」をダウンロードします。

3、ダウンロードしたmxpを実行します。この時、FlashCS3のConfigurationディレクトリの場所(標準で Windowsは「C: /Program Files/Adobe/Adobe Flash CS3/ja/Configuration」Macは「/Applications/Adobe Flash CS3/Configuration」です)を聞かれますので選択してください。

4、インストールが無事完了すれば、FlashCS3でAS3Unit(org.libspark.as3unitパッケージ)が使えるようになります。

【AS3Unit コンポーネント】

AS3Unit 1.2 から、Flex用のAS3Unitコンポーネントが追加されました。これを使用すると、AS3Unit GUIを使用しなくても、グラフィカルに結果を表示出来ます。

AS3Unitコンポーネントを使用するには、次のようなFlexアプリケーションを作成します。





org.libspark.as3unit.components.*をターゲットとしたネームスペースを作成し、それを利用してAS3Unitコンポーネントを配置してください。後は、AS3UnitCore(ファーストステップ参照)を利用するのと同じように、AS3UnitコンポーネントのrunメソッドをcreationCompleteイベントハンドラ内で呼び出してください。これで、 AS3Unitコンポーネント内にグラフィカルに結果が表示されます。

●アサート

アサート(assert)は、デバッグ段階でエラーを検出するために、ソース中に埋め込んでおく実行文です。例えばC言語には、assert()というマクロが用意されています。以下はアサートの使用例:

import org.libspark.as3unit.test;
import org.libspark.as3unit.assert.*;
use namespace test;
public class SampleTest
{
test function sample1():void
{
var s:Sample = new Sample();
assertTrue(s.f());
}
test function sample2():void
{
var s:Sample = new Sample();
assertEquals(”hello”, s.h());
}
}

●before

「before」ネームスペースで修飾されたメソッドは、各テストメソッドが呼び出される前に毎回必ず呼び出されます。フィクスチャのセットアップをする必要がある場合などに使います。
※フィクスチャとは、ユニットテストの事前条件となるテストデータ

import org.libspark.as3unit.test;
import org.libspark.as3unit.before;
import org.libspark.as3unit.assert.*;
use namespace test;
use namespace before;
public class SampleTest
{
private var s:Sample;
before function setupSample():void
{
s = new Sample();
}
test function sample1():void
{
assertTrue(s.f());
}
test function sample2():void
{
assertEquals(”hello”, s.h());
}
}

●after

「after」ネームスペースで修飾されたメソッドは、各テストメソッドが呼び出された後に毎回必ず呼び出されます。フィクスチャのセットアップをする必要がある場合などに使います。
※フィクスチャとは、ユニットテストの事前条件となるテストデータ

import org.libspark.as3unit.test;
import org.libspark.as3unit.before;
import org.libspark.as3unit.after;
import org.libspark.as3unit.assert.*;
use namespace test;
use namespace before;
use namespace after;
public class SampleTest
{
private var s:Sample;
before function setupSample():void
{
s = new Sample();
}
after function teardownSample():void
{
s.finalize();
}
test function sample1():void
{
assertTrue(s.f());
}
test function sample2():void
{
assertEquals(”hello”, s.h());
}
}

【関連資料】

1、libspark上の公式サイト

2、CS3でAS3Unitをつかってみる

3、Flexの単体テスト(UnitTest)について

4、AS3Unitで、手を抜いてテストをする方法

5、ユニットテストを導入する

6、JUnitの解説

Leave a Reply

Your email address will not be published. Required fields are marked *