Frage

In der Flexunit-Wiki Ich habe über die sehr gelesen interessant SequenceRunner, die von den Fluint Leute beigetragen wurde. Jetzt versuche ich, einen Test auszuführen, die zum Beispiel sehr ähnlich ist, aber wenn der run () Methode der SequenceRunner Instanz ausgeführt wird, erhalte ich diese Ausnahme:

    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]

Hat jemand die SequenceRunner mit Flexunit 4 bereits verwendet. Die [Test (async)] Anmerkung bereits vorhanden ist.

War es hilfreich?

Lösung 2

Danke an Michael Labriola, die auf meine Frage geantwortet in dem Adobe Forum ich war schließlich in der Lage, um es läuft zu machen. Beachten Sie, dass die Dokumentation der SequenceRunner im Wiki und teilweise falsch veraltet ist.

  1. Do von jeder Klasse Testcase nicht erben.
  2. Skip the asyncHandler für CREATION_COMPLETE im setUp. Eher einen SequenceWaiter im Test hinzufügen, dass wartet auf das CREATION_COMPLETE Ereignis der Komponente
  3. Der Test als asynchroner Test markiert werden muß, um die [Test(async)] Metadaten zu Testfällen hinzufügen, dass die Verwendung SequenceRunner.

Andere Tipps

Dies ist die komplette, sehr einfache Beispiel Testfall-Klasse.

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"));
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top