سؤال

في ال Flexunit ويكي لقد قرأت عن سلسلة التسلسل المثيرة للاهتمام التي ساهمت بها أفراد الفلنت. الآن أحاول إجراء اختبار يشبه إلى حد كبير المثال ، ولكن عند تنفيذ طريقة Run () لمثيل التسلسل ، أحصل على هذا الاستثناء:

    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]

هل استخدم أي شخص SequencerUnner مع Flexunit 4 بالفعل. التعليق التوضيحي [الاختبار (Async)] موجود بالفعل.

هل كانت مفيدة؟

المحلول 2

بفضل مايكل لابريولا ، الذي أجاب على سؤالي في منتدى Adobe تمكنت أخيرًا من تشغيله. لاحظ أن توثيق SequenceRunner في ويكي عفا عليها الزمن وخطأ جزئيا.

  1. لا ترث من أي فئة اختبار.
  2. تخطي ASYNCHANDLER CREATION_COMPLETE في الإعداد. بالأحرى إضافة أ SequenceWaiter في الاختبار الذي ينتظر CREATION_COMPLETE حدث المكون
  3. يجب وضع علامة على الاختبار كاختبار غير متزامن ، لذا أضف [Test(async)] البيانات الوصفية لاختبار الحالات التي تستخدم SequenceRunner.

نصائح أخرى

فيما يلي فئة حالة اختبار مثال كاملة وبسيطة للغاية.

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"));
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top