Question

Dans le FlexUnit wiki J'ai lu au sujet de la très SequenceRunner intéressant qui a été apporté par les gens Fluint. Maintenant, je suis en train d'exécuter un test qui est très similaire à l'exemple, mais lors de l'exécution de la course () de l'instance SequenceRunner, je reçois cette exception:

    Cannot add asynchronous functionality to methods defined by Test,Before or After that are not marked async
Error: Cannot add asynchronous functionality to methods defined by Test,Before or After that are not marked async
    at org.flexunit.async::AsyncLocator$/getCallableForTest()[C:\Users\dmoor e\Documents\_Production\Flex Unit 4\GIT\FlexUnit4\src\org\flexunit\async\AsyncLocator.as:82]
    at org.fluint.sequence::SequenceWaiter/setupListeners()[C:\Users\dmoore\ Documents\_Production\Flex Unit 4\GIT\FlexUnit4\src\org\fluint\sequence\SequenceWaiter.as:100]
    at org.fluint.sequence::SequenceRunner/continueSequence()[C:\Users\dmoor e\Documents\_Production\Flex Unit 4\GIT\FlexUnit4\src\org\fluint\sequence\SequenceRunner.as:177]
    at org.fluint.sequence::SequenceRunner/run()[C:\Users\dmoore\Documents\_ Production\Flex Unit 4\GIT\FlexUnit4\src\org\fluint\sequence\SequenceRunner.as:124]

Quelqu'un at-il utilisé le SequenceRunner avec FlexUnit 4 déjà. Le [Test (async)] annotation est déjà présent.

Était-ce utile?

La solution 2

Merci à Michael Labriola, qui a répondu à ma question dans le Adobe Forum J'ai enfin pu faire fonctionner. Notez que la documentation de SequenceRunner dans le Wiki est obsolète et partiellement faux.

  1. Ne pas hériter de toute classe TestCase.
  2. Passer la asyncHandler pour CREATION_COMPLETE dans le setUp. Au contraire ajouter un SequenceWaiter dans le test qui attend l'événement CREATION_COMPLETE du composant
  3. Le test doit être marqué comme essai asynchrone, ajoutez le [Test(async)] des métadonnées à des cas de test que l'utilisation SequenceRunner.

Autres conseils

Voici une classe de cas de test exemple complet, très simple.

package test
{
    import flash.events.Event;

    import org.flexunit.asserts.assertEquals;

    import org.fluint.sequence.SequenceRunner;
    import org.fluint.sequence.SequenceWaiter;

    public class test_case
    {
        [Test(async)]
        public function test_function():void
        {
            var counter:Object = { count: 0}
            var sr:SequenceRunner = new SequenceRunner(this);
            sr.addStep(new SequenceWaiter(new TestWaiterTarget(counter), "myEvent", 50000));
            sr.addStep(new SequenceWaiter(new TestWaiterTarget(counter), "myEvent", 5000))
            sr.addAssertHandler(test_function_handler, counter);
            sr.run();
        }

        private function test_function_handler(event:Event, passthroughData:*):void
        {
            assertEquals(passthroughData.count, 2);
        }
    }
}

import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.TimerEvent;
import flash.utils.Timer;

class TestWaiterTarget extends EventDispatcher
{
    var timer:Timer = new Timer(250, 1);

    private var _counter:Object;

    public function TestWaiterTarget(counter)
    {
        _counter = counter;
        timer.addEventListener(TimerEvent.TIMER_COMPLETE, timer_timerCompleteHandler);
        timer.start();
    }

    private function timer_timerCompleteHandler(event:TimerEvent):void
    {
        _counter.count++;
        dispatchEvent(new Event("myEvent"));
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top