2

Flash Builder 4 を IDE として ActionScript3 を使用してアプリを構築しています。

IDE は、「FlexUnit」と呼ばれる単体テスト フレームワークをサポートしています。

問題なく、IDE 内でテストをビルドして実行できます。

多くの苦痛と苦しみの末、コマンドラインから単体テストを swf としてビルドする方法を見つけました。ブラウザーまたはフラッシュ プレーヤーを swf に向けると、テストが実行されます。

しかし、自動化されたビルド システムの場合、これは適切ではありません。テストをビルドして実行し、結果を収集/分析して、失敗しているテストがあるかどうかを確認したいと考えています。

いくつかのハッカーをイメージできます: FlexUnit ベース ライブラリをハックして、出力を IDE コンソールだけでなく stderr にダンプします。ブラウザをswfに向け、60までカウントし、ブラウザを強制終了し、stderrをチェックするスクリプトを一緒にハックします。

しかし、それは恐ろしいです。

自動化されたビルド システムでうまく動作する、コマンド ラインからビルドして実行する方法がいくつかあると私は信じています。

さらに複雑なこと:私はActionScriptの比較的初心者です(〜1か月)。私のバックグラウンドは C++、makefile などです。IDE の外部でビルドするためのテスト (build.xml ファイル、ant) を取得するために必要だったすべてのことは、私にとって完全なギリシャ語でした。 .

4

2 に答える 2

1

私の知る限り、swf を実行するための唯一のオプションは、ブラウザーまたはスタンドアロン プレーヤーにあります。テスト結果を取得してアプリケーションを終了できる限り、プレーヤーでの実行は継続的インテグレーション環境にとって問題にはなりません。

テスト結果を stdout に出力するには、テストユニットのコア インスタンスに Text リスナーを追加する必要があります。

core.addListener( TextListener.getDefaultTextListener( LogEventLevel.DEBUG ) );

テストの実行後にアプリケーションを終了するには...

System.exit(0);

たとえば、最上位の mxml ファイルは次のようになります...

<?xml version="1.0" encoding="utf-8"?>
<mx:Application 
    xmlns:mx="http://www.adobe.com/2006/mxml" 
    creationComplete="runMe()" 
    xmlns:adobe="http://www.adobe.com/2009/flexUnitUIRunner"
    >
    <mx:Script>
        <![CDATA[
            import org.flexunit.runner.FlexUnitCore;
            //import org.flexunit.listeners.UIListener;
            //import org.flexunit.listeners.CIListener;
            import org.flexunit.internals.TextListener;
            import mx.logging.LogEventLevel;
            import flash.system.System
            import unit_tests.TestAuthentication.TestAuthentication

            private var core:FlexUnitCore;

            public function runMe():void {
                core = new FlexUnitCore();
                //core.addListener(new UIListener(uiListener));
                //core.addListener(new CIListener());
                core.addListener( TextListener.getDefaultTextListener( LogEventLevel.DEBUG ) );
                core.run( TestAuthentication );
                System.exit(0);
            }
        ]]>
    </mx:Script>
</mx:Application>

あとは、出力を解析するだけです。私たちが望むほどエレガントではありませんが、うまくいくはずです。

于 2010-10-04T15:16:17.207 に答える