레이블이 FlexUnit4인 게시물을 표시합니다. 모든 게시물 표시
레이블이 FlexUnit4인 게시물을 표시합니다. 모든 게시물 표시

2010년 1월 19일 화요일

FlexUnit 4 UI 테스트 방법

[Before(async, ui)]
public function setUp():void
{
 myView = new MyView();
 Async.proceedOnEvent(this, myView, FlexEvent.CREATION_COMPLETE);
 UIImpersonator.addChild(myView);
}
 
[After(async, ui)]
public function tearDown():void
{
 UIImpersonator.removeChild(myView);
 myView = null;
}

 

 

 

1. 위의 코드처럼 setUp과, tearDown을 구성한다.

2. UIImpersonator에 테스트 하려는 컴포넌트를 테스트 메소드 실행 전에 붙였다가 끝나고 지우는 구조.

 

 

 

[Test(async, ui, order=1)]
public function testDoWork():void
{
 Async.handleEvent(this,
  myView,
  MyView.WORK,
  onWorked,
  LONG_TIME);

 myView.doWork();
}

private function onWorked(event:Event, passThroughData:Object):void
{
 Assert.assertTrue(myView.isEverythingOkay());
}

 

 

 

3. 이벤트 등을 받아서 Assert 사용.

2010년 1월 15일 금요일

FlexUnit 4 비동기 테스트 방법

FlexUnit 4에서 비동기 테스트 방법

 

[Test(async, description="Async Example")]
public function testTimerLongWay():void
{
 var asyncHandler:Function = Async.asyncHandler(this, handleTimerComplete, 500, null, handleTimeout);
 timer.addEventListener(TimerEvent.TIMER_COMPLETE, asyncHandler, false, 0, true);
 timer.start();  
}

 

protected function handleTimerComplete(event:TimerEvent, passThroughData:Object):void
{

}

 

protected function handleTimeout(passThroughData:Object):void
{

}

 

1. Tag에 async를 준다.
2. Async.asyncHandler를 통해 비동기 핸들러를 만든다.
2.1. this - listener 클래스를 지정한다.
2.2. handleTimerComplete - timer에서 TIMER_COMPLETE 이벤트가 발생했을 때 처리 될 이벤트 핸들러.
2.3. 500 - 대기시간을 넣는다. 이 시간이 초과하면 handleTimerout 이벤트 핸들러가 실행, 테스트는 실패.
2.4. null -  대신 어떤 값을 넣으면 handlerTimerComplete의 두 번째 인자로 넘어온다.
2.5. handleTimeout - 앞서 설명한 것처럼 테스트 타임아웃 시에 호출되는 펑션.
3. timer.addEventListener에서 Async.asyncHandler를 통해 생성한 핸들러를 넣는다.

 

위처럼 하면 된다.

 

위의 예에서 이벤트가 발생하면 handleTimerComplete가 호출되고

 

Assert를 사용하여 테스트를 시작하면 된다.