3

フレックスユニット 4.1

フラッシュビルダー 4.5.1

バックグラウンド

FlexUnit UIImpersonator クラスを使用して、カスタム Flex 4 スキン可能コンポーネントをテストしようとしています。FlashBuilder Spark のみのプロジェクトからテストを実行すると、すべて正常に動作します。クラスパスに mx コンポーネントが設定されているプロジェクトからテストしようとすると、「Flex 4 以外のプロジェクトでは getElementIndex を使用できません」というエラーが発生します。

質問

クラスパスに mx コンポーネントを設定したまま、FlexUnits ビジュアル テスト環境で spark コンポーネントを単体テストできますか?

リサーチ

UIImpersonator は、そのメソッド呼び出しを「testEnvironment」に委任します。この「testEnvironment」に使用される実装は、VisualTestEnvironmentBuilder クラスと FlexEnvironmentBuilder クラスによって決定されます。FlexEnvironmentBuilder クラスがクラスパスで「mx.core.Container」を見つけることができる場合、MX 環境を返し、それ以外の場合は Spark 環境を返します。UIImpersonator での Flex 4 関連メソッド呼び出し (addElement メソッドなど) の有効な実装があるのは、spark 環境だけです。

4

1 に答える 1

2

同じ問題があり、解決策が見つかりませんでした。バグを報告することをお勧めしますが、FlexUnitはApache Flexに採用されている途中であるため、すぐに解決されるとは思いません。

回避策として。UIImpersonator.addChild()を使用して、TestRunnerにmx.core.Containerへの参照を追加するだけです。これにより、MXコンテナがtestEnvironmentとして使用され、「getElementIndex...」エラーが発生しなくなります。

import mx.core.Container

public function runTests():void {
    // reference to mx container
    var containerRef:Container = new Container();

    // Run your testsuite as usual. eg:
    var core:FlexUnitCore = new FlexUnitCore();
    core.run(MyTestSuite);
}
于 2012-04-03T09:45:39.333 に答える