Frage

Ich gründe eine Funktionstestsuite für eine Anwendung, die Lasten eine externe Konfigurationsdatei. Gerade jetzt, ich bin mit der Flexunit addAsync Funktion zu laden und dann wieder zu testen, ob der Inhalt auf Dienste verweisen, die existieren und zugegriffen werden kann.

Das Problem dabei ist, dass mit dieser Art von zwei (oder mehr) Stufen-Verfahren bedeutet, dass ich alle meine Tests im Rahmen eines Tests mit Dutzenden von behauptet laufen, die wie eine Art von degenerierter Art und Weise scheint verwenden Sie den Rahmen und macht Fehler schwerer zu finden. Gibt es eine Möglichkeit etwas wie eine asynchrone Setup haben? Gibt es einen anderen Test-Framework, dass Griffe dies besser?

War es hilfreich?

Lösung

Angenommen, Sie sind mit Flexunit 4 kann addAsync aus einer [BeforeClass] Methode aufgerufen werden:

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");
    }
}

Having said that, Code zu testen, die auf eine Datei zugreift ist wirklich ein Integrationstest. Ich bin auch kaum in der Lage, gegen argumentieren ASMock mit:)

Andere Tipps

Es ist ziemlich einfach, aber habe mir 2 Tage, um es herauszufinden. Die Lösung:

Zuerst müssen Sie eine statische var irgendwo erstellen.

 public static var stage:Stage

Es gibt einen FlexUnitApplication.as durch den Flexunit Rahmen geschaffen, und im onCreationComplete () Funktion können Sie die Bühne, um die statische Referenz zuvor erstellt:

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");
    }

und wenn Sie die Bühne in dem Programm zugreifen würden, sollten Sie ersetzen es an:

if(stage==null) stage=testStageRef.stage

Sounds wie Sie benötigen die Abhängigkeit der Belastung, dass die externe Datei zu entfernen. So gut wie alle Aysnchronous Tests können durch die Verwendung eines spöttischen Frameworks entfernt werden. ASMock ist eine wunderbare Wahl für Flex. Es wird Sie zu fälschen lassen die URLoader Objekt und zurück Konfigurationen gefälscht gegen Ihre Tests auszuführen. Mocking hilft Ihnen viel besser Unit-Tests schreiben, wie Sie alle Abhängigkeiten synchron oder asynchron spotten kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top