首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在FlexUnit 4中使用SequenceRunner

如何在FlexUnit 4中使用SequenceRunner
EN

Stack Overflow用户
提问于 2010-08-11 21:04:04
回答 2查看 1.1K关注 0票数 2

FlexUnit wiki中,我读到了一个非常有趣的SequenceRunner,它是由Fluint团队贡献的。现在我正在尝试运行一个与示例非常相似的测试,但是在执行SequenceRunner实例的run()方法时,我得到了这个异常:

代码语言:javascript
复制
    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]

有没有人已经用过FlexUnit 4的SequenceRunner了?测试(异步)批注已存在。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-14 01:55:12

多亏了Michael Labriola,他在Adobe Forum上回答了我的问题,我终于能够让它运行起来。请注意,SequenceRunner in the Wiki的文档已经过时,并且部分是错误的。

  1. 不从任何TestCase类继承。
  2. 跳过asyncHandler中的CREATION_COMPLETE。相反,在等待组件的CREATION_COMPLETE事件的测试中添加SequenceWaiter
  3. 该测试必须标记为异步测试,因此将[Test(async)]元数据添加到使用SequenceRunner.

的测试用例中

票数 0
EN

Stack Overflow用户

发布于 2011-12-15 12:30:52

下面是一个完整的、非常简单的示例测试用例类。

代码语言:javascript
复制
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"));
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3458531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档