Flexで機能テストを設定します
-
01-10-2019 - |
質問
外部構成ファイルをロードするアプリケーション用の機能テストスイートをセットアップしています。現在、FlexUnitのAddAsync関数を使用してロードし、その後、内容が存在してアクセスできるサービスを指しているかどうかをテストしています。
これに関する問題は、この種の2つ(またはそれ以上)の方法を持つことは、1つのテストのコンテキストですべてのテストを実行していることを意味することです。 、およびバグを見つけるのが難しくなります。非同期セットアップのようなものを持つ方法はありますか?これをよりよく処理する別のテストフレームワークはありますか?
解決
FlexUnit 4を使用していると仮定すると、addasyncは[beforeclass]メソッドから呼び出すことができます。
public class TestFixture
{
[BeforeClass]
public static function fixtureSetup() : void
{
// This static method will be called once for all the tests
// You can also use addAsync in here if your setup is asynchronous
// Any shared state should be stored in static members
}
[Test]
public function particular_value_is_configured() : void
{
// Shared state can be accessed from any test
Assert.assertEquals(staticMember.particularValue, "value");
}
}
そうは言っても、ファイルにアクセスするコードをテストすることは本当に統合テストです。私はまた、Asmockを使用することに反対する立場にはほとんどありません:)
他のヒント
とても簡単ですが、それを理解するのに2日かかりました。ソリューション:
まず、どこかで静的varを作成する必要があります。
public static var stage:Stage
FlexUnit Frameworkによって作成されたFlexUnitApplicationがあり、OnCreationComplete()関数では、以前に作成された静的参照にステージを設定できます。
private function onCreationComplete():void
{
var testRunner:FlexUnitTestRunnerUIAS=new FlexUnitTestRunnerUIAS();
testRunner.portNumber=8765;
this.addChild(testRunner);
testStageRef.stage=stage //***this is what I've added
testRunner.runWithFlexUnit4Runner(currentRunTestSuite(), "testsuitename");
}
そして、プログラムのステージにアクセスする場合は、次のように置き換える必要があります。
if(stage==null) stage=testStageRef.stage
その外部ファイルの読み込みの依存関係を削除する必要があるように聞こえます。ほとんどすべてのaysnchronousテストは、 モッキングフレームワーク. アスモック Flexには素晴らしい選択肢です。これにより、Urloaderオブジェクトを偽造し、テストを実行するために偽造された構成を返すことができます。モッキングは、すべての依存関係を同期または非同期にock笑できるため、はるかに優れたユニットテストを書くのに役立ちます。