2010-08-11 8 views
2

FlexUnit wiki Fluint 사람들이 기고 한 매우 흥미로운 SequenceRunner에 대해 읽었습니다. 실행 SequenceRunner 인스턴스의() 메소드를 실행할 때 지금은 그러나, 예를 들어 매우 유사한 테스트를 실행하려고,이 예외가 :SequenceRunner를 FlexUnit 4에서 사용하는 방법

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을 사용하고있다 . [테스트 (비동기)] 주석이 이미 있습니다.

답변

0

Adobe Forum에서 제 질문에 답변 한 Michael Labriola 덕분에 마침내 그 프로그램을 실행할 수있었습니다. SequenceRunner in the Wiki의 설명서는 구식이며 부분적으로 잘못되었습니다.

  1. TestCase 클래스에서 상속하지 마십시오.
  2. setUp에서 CREATION_COMPLETE의 asyncHandler를 건너 뜁니다. 오히려 성분
  3. 시험은 시험 비동기 표시해야의 CREATION_COMPLETE 이벤트를 대기하는 시험에서 SequenceWaiter 추가되므로 SequenceRunner를 사용할 경우를 테스트 [Test(async)] 메타 데이터를 추가한다.
1

다음은 완전하고 간단한 예제 테스트 사례 클래스입니다.

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")); 
    } 
}