1

やあみんな!
以前はFlexUnitを使用してUnitTestsを作成していましたが、モデルをテストしていました。次に、ビューもテストします。テストを実行する前に、ビューとモデルのインスタンスを作成してテストします。ビューにアクセスしようとすると、nullポインタ例外が発生します。ビューをディスプレイリストに追加すると、追加した直後にリストから削除しても、どういうわけか機能します。

次のようになります。

var myView: MyView = new myView();
//myView.initialize(); will throw error
Application.application.addChild(view);
Application.application.removeChild(view);
myView.initialize(); // will work


ヒントを教えていただければ幸いです。

シムズ

4

3 に答える 3

3

Flex UIComponents は、コンテナーに追加されるまで、コンポーネントのライフサイクルをたどりません。そのため、変数をコンテナーに追加しないと、変数が初期化されず、子が作成されない場合があります。

Flex コンポーネントのライフサイクルの詳細。コンポーネントがコンテナーに追加された後、11 のステップがあることに気付くでしょう。

追加してから削除すると、他の問題が発生する可能性があると思いますが、テストしようとしているものによって異なります。

正確なエラーを知るには、ビューの初期化メソッドにあるコードを確認する必要があります。ほとんどの場合、まだ作成されていない子にアクセスします。

多くの場合、MXML コンポーネントはライフサイクル ステップをマスクしますが、コンポーネントはそれらを通過します。

これがお役に立てば幸いです。しかし、あなたは質問をしなかったので、それがあなたが求めていた情報であったかどうかはわかりません.

于 2011-05-23T12:10:10.043 に答える
1

(www.Flextras.com) が書いたもの (私が投稿しようとしていたもの) に加えて、ビューをテストするための別のアプローチを検討することもできます。

まず、プレゼンテーション モデル、MVP、MVC などの分離パターンを考えます。ビューをビューの動作から分離し、ビューとは別に動作をテストできます。このようなアプローチを正しく行うと、ビュー内の AS3 コードを最小化または排除できるため、長い道のりを歩むことができます。

ビューを本当にテストしたい場合は、機能テスト ツールを使用することをお勧めします。単体テスト フレームワークは、クラスを分離してテストするのに適しています。ライフサイクルが複雑なビューについて話し始めると、機能テスト フレームワークが意味を成し始めます。

Flex の機能 UI テスト フレームワークの例として、 FlexMonkeyを見てください。

于 2011-05-23T12:16:37.103 に答える
0

ここまたはここで説明されているユーザーインターフェイスファサードを使用することをお勧めします。この機能は、UIコンポーネントのテスト用に特別に設計されています。

于 2011-05-23T12:22:18.280 に答える