1

外部構成ファイルをロードするアプリケーションの機能テストスイートをセットアップしています。現在、flexunitのaddAsync関数を使用してロードし、コンテンツが存在してアクセスできるサービスを指しているかどうかを再度テストしています。

これに伴う問題は、この種の2つ(またはそれ以上)のステージメソッドがあるということは、数十のアサートを含む1つのテストのコンテキストですべてのテストを実行していることを意味します。これは、フレームワークを使用する一種の退化した方法のようです。 、バグを見つけにくくします。非同期セットアップのようなものを作成する方法はありますか?これをより適切に処理する別のテストフレームワークはありますか?

4

3 に答える 3

1

とても簡単ですが、理解するのに2日かかりました。ソリューション:

まず、静的変数をどこかに作成する必要があります。

 public static var stage:Stage

flexunitフレームワークによって作成されたFlexUnitApplication.asがあり、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
于 2012-01-30T12:06:39.253 に答える
0

その外部ファイルをロードする依存関係を削除する必要があるようです。ほとんどすべての非同期テストは、モックフレームワークを使用して削除できます。 ASMockはFlexにとって素晴らしい選択です。これにより、URLoaderオブジェクトを偽造し、偽造された構成を返してテストを実行できます。モックは、すべての依存関係を同期または非同期でモックできるため、はるかに優れた単体テストを作成するのに役立ちます。

于 2010-04-23T20:15:23.927 に答える
0

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 の使用に反対する立場にいることはほとんどありません :)

于 2010-05-12T09:48:15.960 に答える