3

パブリッシャーに配布され、パブリッシャーが当社のシステムと統合できるようにする一連の Flash コンポーネントを構築および維持しています。現在、コンポーネントには UI がなく、システム サーバーへのクエリ、応答の解析、およびクエリで送信されたパラメーターの変更を行うためのコンパイル済みコードが含まれているだけです。Flex と CS3 の両方に As2 バージョンと AS3 バージョンがあります。典型的なワークフローは次のようになります。

1.) コンポーネントをロードする 2.) コンポーネントにパラメータを設定する 3.) システムにクエリを実行するようにコンポーネントに指示する 4.) 応答が受信され、解析されたことを示すイベントを待つ 5.) コンポーネントのメソッドを呼び出して取得し、解析済みデータの使用

最近、これらのコンポーネントのテストを自動化することについてよく話し合っていますが、AsUnit や FlexUnit などのフレームワークについては多くの話題があるようです。しかし、私はこれらのうちの 1 つを効果的に使用する方法を理解できませんでした。例とチュートリアルは常に実際の例を軽視し、代わりに複数のクラスとサンプル関数が num1+num2 を返すかどうかをテストするための過剰なコードを提供します。

私が推測できる唯一のことは、これらのテスト フレームワークは、開発の開始時に組み込まれるテスト スイート、テスト ランナー、およびテスト ケースを計画して、最初から実装されることを意図していることです。

コンポーネントの自動テストでは、プロパティが適切に設定されていること、それらのプロパティがリクエストでシステムに送信されたこと、受信した応答が送信されたパラメーターを考慮して正しいこと、解析されたデータに正しい情報が含まれていること、エラーがないこと、応答が正しくないことを確認する必要があります。 、または無限の解析ループが発生します。

私の質問は、テスト フレームワークに適合するように完全に作り直すことなく、広く配布され、確立された既存の Flash コンポーネントのテストを自動化する方法はありますか? または、テストフレームワークを誤解していますか?これはすでに可能ですか?

更新: 返信ありがとうございます。自分のコンポーネントを AsUnit に統合し始めましたが、それがどのように役立つかについてかなりよく理解していると思います。ただし、AS2 AsUnit は非同期テスト ケースをサポートしていないため、AS2 単体テスト フレームワークを見つけるのに苦労しています。非同期テストは、このプロジェクトにとって非常に重要です。別のフレームワークに関する推奨事項はありますか? ありがとう!

4

3 に答える 3

3

私たちのプロジェクトでは FlexUnit を使用していますが、とても満足しています。プロジェクトがかなり緩い程度の結合で設計されていると仮定すると、コードをテストするために (もしあれば) あまり変更する必要はありません。CairngormPureMVCなどの MVC フレームワークを既に使用している場合、FlexUnit は簡単に統合できるはずです。

ただし、私の Flash/Flex ユニット テストの経験は、Ruby や .NET などの他の言語の場合ほど肯定的ではないと言いたいのですが、それには 3 つの理由があります。1 つ目は、非常に高度なアクション スクリプト コードが UI 関連であり、この種のコードをテストすることは、不可能ではないにしても難しいということです。もう 1 つの理由は、テスト ランナーを実行してボタンをクリックするのに人間が必要なため、CruiseControl.NETCruiseControl.rbなどの継続的インテグレーション環境にテスト ランナーをプラグインするのに適していないことです。最後に、単体テストの大きな利点は、NCoverrcovなどのカバレッジ分析ツールと一緒に実行できることです。. Flash/Flex は、Flexcoverなどの修正されたコンパイラがなければ、この種の分析には適していません。

于 2008-10-20T20:14:06.890 に答える
2

AsUnitを利用したことをうれしく思います。

AsUnitは、ActionScript2とActionScript3で一貫したエクスペリエンスを提供する唯一の単体テストフレームワークです。外部フレームワーク(特にFlex)に依存することはなく、事後にプロジェクトのテストを作成する際に実際の問題は発生しません。

AsUnitの最新ビルドでは、ActionScript 2での非同期テストがサポートされています。as25ブランチは、次の場所にあります。

http://github.com/lukebayes/asunit

于 2009-05-11T21:13:11.003 に答える
1

アクションスクリプトでユニットテスターを使用する機会は一度もありませんでしたが、作業中に次のようなフレームワークを作成しました。

  1. テストアプリケーション内でスクリプトをコンパイルしました。この場合はflexを使用します
  2. ループ障害が発生した場合に備えて、タイマー(ウォッチドッグ)アプリケーションを設定します
  3. アプリケーションを実行しました。
    • PHPバックエンドに接続してテストケースを取得する
    • コンポーネントにテストを送りました
    • 結果を読んで送り返しました
  4. ウォッチドッグは、最初に発生したアプリケーションを起動して強制終了します。
    • タイマーが切れました(合理的なタイムアウト)
    • アプリケーションが結果を送り返しました
  5. 実行する他のテストがある場合は、2に進みます。

確かにエレガントではありませんが、仕事をしました(これはAS1スクリプトでした)

于 2008-10-21T13:06:41.183 に答える