fc2ブログ
Flexにはユニットテスト(単体テスト)を自動で行ってくれるものがある。

開発者にとって単体テストは絶対に通らなくてはならない道である

その単体テストを行ってくれるということで調べてみました

業務で使用することがある肩は参考にしてみてください。(ならないか。。)



AS3Unit
これはActionScript3.0上で単体テストを行うためのフレームワークです
ActionScript3.0のネームスペースを用いる事でPOJOによるテストケースの記述を可能にしています。
AS3Unitを用いる事で、テスト効率をアップさせることができます


【目次】
1・テストの作成
2・アサート
3・before
4・after
5・beforeClass
6・afterClass
8・テストスイート
9・ストの実行




■1・テストの作成
テストメソッドは「test」ネームスペースで修飾します。
これで、そのメソッドがテストメソッドとして自動で実行されます。
メソッドは引数なし、voidである必要があります。

import org.libspark.as3unit.test;

use namespace test;

public class SampleTest
{
test function sample1():void
{
}

test function sample2():void
{
}
}

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

org.libspark.as3unit.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());
}
}



assertEquals()とは
第2引数で渡された値が、第1引数と等しければテストをパスする」ものです

これををデバッグ版で実行すると、テストが失敗している場合はエラー結果が出力されます。



■3・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());
}
}



■4・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());
}
}



■5・beforeClass
「beforeClass」ネームスペースで修飾されたメソッドは、テストクラス内の全てのテストが実行される前に1度だけ呼び出されます。
フィクスチャのセットアップをする必要がある場合などに使います。
※フィクスチャとは、ユニットテストの事前条件となるテストデータ



■6・afterClass
「afterClass」ネームスペースで修飾されたメソッドは、テストクラス内の全てのテストが実行された後に1度だけ呼び出されます。
フィクスチャのセットアップをする必要がある場合などに使います。
※フィクスチャとは、ユニットテストの事前条件となるテストデータ



■7・test_expected
正常に例外がスローされているかどうかをテストしたい場合は、例外がスローされることを期待するテストメソッドと同じ名前で、static、constなプロパティを作成します。
そして、test_expectedネームスペースで修飾して、期待される例外クラスを指定してください。
以下の例を参考にどうぞ

import org.libspark.as3unit.test;
import org.libspark.as3unit.test_expected;

use namespace test;
use namespace test_expected;

public class SampleTest
{
// ArgumentErrorがスローされることを期待
test_expected static const error:Class = ArgumentError;
test function error():void
{
var s:Sample = new Sample();
s.e(null);
}
}




■8・テストスイート
複数のテストをひとまとめにするために、テストスイートを作ることが出来ます。
次のようなクラスを作り、SuiteClasses配列の中に、テストクラスを列挙してください。
フォルダと同じようにテストスイートをを入れ子にし、階層を作ることも可能です。
また、テストスイートはパッケージごとに作成するのが一般的です。

※クラス名は特に決まっていないがAllTestにするのが一般的だそうです。

import org.libspark.as3unit.runners.Suite;

public class AllTests
{
public static const RunWith:Class = Suite;
public static const SuiteClasses:Array = [
SampleTest,
HogeTest,
FugaTest
];
}


■9・テストの実行
テストを実行するには、AS3UnitCoreクラスを使用するのが簡単です。
mainメソッドを、テスト対象のクラスを引数として呼び出すと、結果がtraceされます。


Flex上で実行する場合の記述




  
          import org.libspark.as3unit.runner.AS3UnitCore;
      
      private function creationCompleteHandler():void{
        AS3UnitCore.main(AllTests);
      }
    ]]>
  




以上をデバッグで実行することによりテストを実行する事ができます。
テスト結果にエラーがあればエラーが出力されます。



全てのテストが成功した場合


Time: 0.009

OK (4 tests)

の様な結果が出力されます
以上がFlexでの単体テストの方法です



詳しくはこちらからどうぞ
http://smileboys.fc2web.com/WebUtility/flex/unitTest.html
スポンサーサイト



テーマ:WEB系勉強中 - ジャンル:コンピュータ

<<Flexの単体テスト(UnitTest)について その2 | ホーム | FlexにてHelloWorldを作ってみた>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://kanamehackday.blog17.fc2.com/tb.php/68-bf02f89a
この記事にトラックバックする(FC2ブログユーザー)