Pregunta

En el FlexUnit wiki que he leído sobre el mismo SequenceRunner interesante que fue aportada por la gente Fluint. Ahora estoy tratando de ejecutar una prueba de que es muy similar a la del ejemplo, sin embargo cuando se ejecuta el método run () de la instancia SequenceRunner, consigo esta excepción:

    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]

¿Alguien ha utilizado el SequenceRunner con FlexUnit 4 ya. El [Test (asíncrono)] anotación ya está presente.

¿Fue útil?

Solución 2

Gracias a Michael Labriola, quien respondió a mi pregunta en el Adobe Foro Por fin pude hacer que funcione. Tenga en cuenta que la documentación de SequenceRunner en el Wiki es anticuado y parcialmente equivocado.

  1. No hereda de ninguna clase TestCase.
  2. Saltar la asyncHandler para CREATION_COMPLETE en la configuración. Más bien añadir un SequenceWaiter en la prueba que se espera para el evento CREATION_COMPLETE del componente
  3. La prueba debe ser marcado como prueba asíncrona, por lo que añadir el [Test(async)] metadatos a los casos de prueba que el uso SequenceRunner.

Otros consejos

Aquí hay un ejemplo muy simple clase completa, caso de prueba.

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"));
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top