2010年03月19日

ActionScript3で条件付きコンパイル(Flash Develop)

ActionScript3で条件付きコンパイル(Flash Develop)

ActionScript3でC++で言う所の#ifdefな事をしたいなーっと思って調べたら条件付きコンパイルを発見。

ActionScriptの条件付きコンパイル
続きを読む


posted by purigen at 02:13| Comment(0) | TrackBack(0) | ActionScript | このブログの読者になる | 更新情報をチェックする

2010年03月14日

FlexUnit 4 の導入&使い方

ActionScript3でユニットテストを行い時に良いフレームワークに、[Adobe Open Source]で提供されている[FlexUnit 4]というのがあります。 その導入と使い方についてです。

1.ダウンロードしてくる


adobe open source Flex Unitの[Downloads]からFlexUnit 4 の最新版(2010/01/29時点:FlexUnit4 RC1.0)をダウンロードしてきてzipを解凍します。

2.テスト用プロジェクト作成


FlashDevelopをします。Builderは使った事無いので適時読み替えて頂ければと思います。

ダウンロードしてきたFlexUnit4プロジェクト:以降FlexUnit4と表記。
テストプロジェクト:TestFlexUnit4と表記。構成は、
TestFlexUnit4
+ bin :バイナリ
+ lib :ライブラリ
- FlexUnit1Lib.swc :[FlexUnit4/libs]からコピー
- FlexUnit4.swc:[FlexUnit4/libs]からコピー
- FlexUnit4UIListener.swc:[FlexUnit4/libs]からコピー
- hamcrest-1.0.2.swc :[FlexUnit4/libs]からコピー
+ obj
+ src
- Calculator.as :テスト対象クラス
- Main.mxml :mxml
+ test
- TestSuite.as :テストスイート用AS
+tests
- TestCalculator.as :Calculatorクラスのテストクラス

3.ソースコード&ライブラリのパス通す


・ライブラリパス通す
[Project]→[Properties]→[Compiler Options]→[SWC Include Libraries]に
TestFlexUnit4のパス\lib\FlexUnit1Lib.swc TestFlexUnit4のパス\lib\FlexUnit4.swc TestFlexUnit4のパス\lib\FlexUnit4UIListener.swc TestFlexUnit4のパス\lib\hamcrest-1.0.2.swc
を追加
・ソースパス通す
[Project]→[Properties]→[Classpaths]→[Add Classpath...]で「testprojectのパス/test」を追加

4.テスト対象のクラス作成(TestFlexUnit4/src/Calculator.as)



//Calculator.as
package
{
/**
* ...
* @author kenji kadono
*/
public class Calculator
{
/*!
* brief 足し算!!
*/
public function add(a:int, b:int):int
{
return a + b;
}
/*!
* brief 引き算!!
*/
public function sub(a:int, b:int):int
{
return a + b;//わざと間違えてるよ。小学校は卒業してるのです。
}
}
}

5.テストクラス作成



//TestCalculator.as
package tests
{
import org.flexunit.Assert;
import Calculator;

/**
* ...
* @author kenji kadono
*/
public class TestCalculator
{
[Test]
public function testAdd():void {
var target:Calculator = new Calculator();
Assert.assertEquals(2, target.add(1, 1));
}
[Test]
public function testSub():void {
var target:Calculator = new Calculator();
Assert.assertEquals(0, target.sub(1, 1));
}
}
}

6.テストスイート作成


[Suite],[RunWith("org.flexunit.runners.Suite")]は、FlexUnit4用のテストスイートのタグです。

//TestSuite.as
package
{
import tests.TestCalculator;

[Suite]
[RunWith("org.flexunit.runners.Suite")]
/**
* ...
* @author kenji kadono
*/
public class TestSuite
{
public var test1:TestCalculator;
}
}

7.Main.mxmlを変更



<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="runMe()"
xmlns:flexUnitUIRunner="http://www.adobe.com/2009/flexUnitUIRunner">
<mx:Script>
<![CDATA[
import TestSuite;

import mx.controls.Alert;
import mx.core.IFlexDisplayObject;
import mx.managers.PopUpManager;
import mx.managers.SystemManager;
import org.flexunit.asserts.*;
import org.flexunit.internals.TraceListener;
import org.flexunit.listeners.UIListener;
import org.flexunit.runner.FlexUnitCore;
import org.flexunit.runner.Request;

private var core:FlexUnitCore;
public function runMe():void {
core = new FlexUnitCore();
core.addListener(new UIListener(uiListener));
core.run( TestSuite );
}
]]>
</mx:Script>
<flexUnitUIRunner:TestRunnerBase id="uiListener" width="100%" height="100%" />
</mx:Application>

8.実行してみる


これで動くはずなので、実行してみましょう。上手く実行できれば、下のようなのが表示されます。
FlexUnit4_Execute.PNG
テストが失敗しているのは、Calculator.sub()の関数の中身が間違っているからですので、修正して実行すれば成功の表示を見る事ができます。 これでテスト環境の作り方は一通りOK。

◆参考
FlexUnit4 Wiki:http://docs.flexunit.org/index.php?title=Main_Page
ラベル:flex FlexUnit4
posted by purigen at 19:30| Comment(0) | TrackBack(0) | ActionScript | このブログの読者になる | 更新情報をチェックする

2010年03月08日

mxmlでActionScriptのpackage参照方法。

mxmlでActionScriptのpackage参照方法。

下記のActionScript3のコードがあったとして、

//TestHoge.as
package
{
import mx.controls.Alert;

public class TestHoge
{
public function sayHoge():void
{
Alert.show("HooooooooGe!!");
}
}
}

これをmxmlで読みたい時に

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script source="TestHoge.as"/>
</mx:WindowedApplication>

とすると、エラーになる。「mx:Script source="TestHoge.as"」は、mxml上にマジメにTestHoge.asを展開するので、mxmlはpackageが使えないのが原因。これを回避するには、

//funcMan.as
import mx.controls.Alert;
import TestHoge;

public function helloworld():void{
var hoge:TestHoge = new TestHoge();
hoge.sayHoge();
}

というfuncMan.asを作成して、

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script source="funcMan.as"/>
<mx:Button label="say_Hoge!" click="helloworld()" />
</mx:WindowedApplication>

とすればOK。
ラベル:as3 mxml flex
posted by purigen at 01:33| Comment(0) | TrackBack(0) | ActionScript | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。