機能系のライブラリ、関数を作成するとき、何の開発言語を言わせず、単体テストはとても重要ですね。JavaならJUnitというツールがあり、C++だったらCPPUnitというものがあります。では、Flex/ActionScriptはどうでしょうか。ふー、今回紹介する「FlexUnit」です。

「FlexUnit」(Googleプロジェクト名:as3flexunitlib)とは、名前の通り、Flex/ActionScript3.0アプリケーションの単体テストを行うためのユニットテスティングフレームワークです。テスト結果は、FlexのGUIで確認することができます。

機能・特徴

・JUnitと似たような実装手法提供
・テスト結果をGUIで確認できる
・オープンソース。BSDライセンス

テストケースの書き方

提供されている、FlexUnit.swcにはflexunit.framework.TestCaseというクラスが含まれています。
このクラスを継承してTestCaseを作成していきます。テストメソッドは、メソッド名が testから始まる名前にすることで反応します。基本的はJUnitやCppUnitと同じですよね。

1)、環境構築

以下のURLでFlexUnitをダウンロードします。

http://opensource.adobe.com/wiki/display/flexunit/Downloads

2)、Flexアプリケーションで『FlexUnitSample』プロジェクトを作成。

3)、プロジェクトにライブラリパスに『glexunit.swc』を追加する。

4)、クラス作成
①、『FlexUnitSample』プロジェクトTemperatureConverter.asを追加する。

  1. package {
  2.   public class TemperatureConverter {
  3.     public static function toFahrenheit(celsius:Number):Number {
  4.       return (9 / 5) * celsius + 32;
  5.     }
  6.     public static function toCelsius(fahrenheit:Number):Number {
  7.       return (5 / 9) * (fahrenheit - 32);
  8.     }
  9.   }
  10. }

②、『FlexUnitSample』プロジェクトTemperatureConverter.asを追加する。

  1. package {
  2.   import flexunit.framework.TestCase;
  3.   import flexunit.framework.TestSuite;
  4.   public class TemperatureConverterTest extends TestCase {
  5.     public function TemperatureConverterTest(methodName:String) {
  6.       super(methodName);
  7.     }
  8.     public static function suite():TestSuite {
  9.       var suite:TestSuite = new TestSuite();
  10.       suite.addTest(new TemperatureConverterTest(testToFahrenheit));
  11.       suite.addTest(new TemperatureConverterTest(testToCelsius));
  12.       return suite;
  13.     }
  14.     public function testToFahrenheit():void {
  15.       var celsius:Number = 100;
  16.       var fahrenheit:Number = TemperatureConverter.toFahrenheit(celsius);
  17.       assertEquals(Expecting 212 fahrenheit”, 212, fahrenheit);
  18.       celsius = 0;
  19.       fahrenheit = TemperatureConverter.toFahrenheit(celsius);
  20.       assertEquals(Expecting 32 fahrenheit”, 32, fahrenheit);
  21.     }
  22.     public function testToCelsius():void {
  23.       var fahrenheit:Number = 212;
  24.       var celsius:Number = TemperatureConverter.toCelsius(fahrenheit);
  25.       assertEquals(Expecting 100 celsius”, 100, celsius);
  26.       fahrenheit = 32;
  27.       celsius = TemperatureConverter.toCelsius(fahrenheit);
  28.       assertEquals(Expecting 0 celsius”, 0, celsius);
  29.     }
  30.   }
  31. }

③、『FlexUnitSample』プロジェクトsample_test.mxmlを追加する。

  1. <?xml version=”1.0encoding=”utf-8?>
  2. <mx:Application xmlns:mx=”http://www.adobe.com/2006/mxmlxmlns=”*”
  3.         xmlns:flexunit=”flexunit.flexui.*”
  4.         creationComplete=”onCreationComplete()”>
  5.   <mx:Script>
  6.     <![CDATA[
  7.       import flexunit.framework.TestSuite;
  8.       private function onCreationComplete():void {
  9.          testRunner.test = createSuite();
  10.          testRunner.startTest();
  11.       }
  12.       private function createSuite():TestSuite {
  13.          var suite:TestSuite = new TestSuite();
  14.          suite.addTest(TemperatureConverterTest.suite());
  15.          return suite;
  16.        }
  17.     ]]>
  18.   </mx:Script>
  19.   <flexunit:TestRunnerBase id=”testRunnerwidth=”100%” height=”100%” />
  20. </mx:Application>

5)、テスト実行
1.sample_test.mxmlをデフォルトアプリケーションに設定して実行する。
2.テスト結果が表示されることを確認する。(以下の画像はhttp://ntt.cc からのです)

clip-image009

関連リンク
http://opensource.adobe.com/wiki/display/flexunit/FlexUnit 公式サイト
http://ntt.cc/2008/08/12/how-to-use-flexunit-in-flex.html 初心者向け

メインコンテンツEND ■
1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading ... Loading ...

Posted on Thursday, 7th May 2009 by admin

Tags: , , , ,
Posted in Flash, Flash Project, Flex | Comments (0) | 4,592 views

Leave a Reply