Question

Je mise en place d'une suite de test fonctionnel pour une application qui se charge d'un fichier de configuration externe. En ce moment, je suis en utilisant la fonction addAsync de FlexUnit pour le charger, puis de nouveau pour vérifier si le contenu pointent vers des services qui existent et sont accessibles.

Le problème avec ceci est que d'avoir ce genre de deux (ou plus) des moyens de méthode étape que je suis en tous mes tests dans le cadre d'un test avec des dizaines d'affirme, ce qui semble être une sorte de chemin dégénéré à utiliser le cadre, et rend les bugs plus difficiles à trouver. Est-il possible d'avoir quelque chose comme une configuration asynchrone? Y at-il un autre cadre de test qui gère ce mieux?

Était-ce utile?

La solution

En supposant que vous utilisez FlexUnit 4, addAsync peut être appelé à partir d'une méthode [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");
    }
}

Cela dit, le code test qui accède à un fichier est vraiment un test d'intégration. Je suis aussi guère en mesure de faire valoir contre l'utilisation ASMock:)

Autres conseils

Il est assez facile, mais m'a fallu 2 jours pour comprendre. La solution:

D'abord, vous devez créer un endroit var statique.

 public static var stage:Stage

Il y a un FlexUnitApplication.as par le cadre FlexUnit et à la fonction onCreationComplete (), vous pouvez définir la scène à la référence statique créée précédemment:

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

et quand vous accéder au stade du programme, vous devez le remplacer à:

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

On dirait que vous devez supprimer la dépendance de la charge que fichier externe. Quasiment tous les tests Aysnchronous peuvent être éliminés par l'utilisation d'un moqueur cadres . ASMock est un choix impressionnant pour Flex. Il vous permettra de simuler l'objet URLoader et retour configurations truquées pour exécuter vos tests contre. Mocking vous aidera avec vous écrivez bien meilleurs tests unitaires que vous pouvez railler toutes les dépendances synchrone ou asynchrone.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top