FlexUnit4のflexUnitUIRunnerでテスト終了時にAlert消去
FlexUnit4でテストをしている際に、アプリケーション内で表示したAlertがテスト実行の際に出っ放しになるのが目障りだったので、表示したAlertをテスト終了時に消去するコードを書いてみた。
public function testsCompleteHandler(event:Event):void { var len:int = systemManager.rawChildren.numChildren; for (var i:int = len - 1; i > -1; i--) { var obj:IFlexDisplayObject = systemManager.rawChildren.getChildAt(i) as IFlexDisplayObject; if (obj is Alert) { PopUpManager.removePopUp(obj); } } }
全体はこんな感じ。
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="runMe()" xmlns:flexUnitUIRunner="http://www.adobe.com/2009/flexUnitUIRunner" styleName="flexUnitApplication"> <mx:Script> <![CDATA[ import mx.controls.Alert; import mx.core.IFlexDisplayObject; import mx.managers.PopUpManager; import mx.managers.SystemManager; import org.flexunit.asserts.*; import org.flexunit.internals.TraceListener; import org.flexunit.listeners.UIListener; import org.flexunit.runner.FlexUnitCore; import org.flexunit.runner.Request; import suite.XxxTestSuite; import suite.YyyTestSuite; import suite.ZzzTestSuite; private var core:FlexUnitCore; public function runMe():void { core = new FlexUnitCore(); core.addListener(new TraceListener()); core.addListener(new UIListener(uiListener)); core.addEventListener(FlexUnitCore.TESTS_COMPLETE, testsCompleteHandler); core.run(XxxTestSuite, YyyTestSuite, ZzzTestSuite); } /** * テスト完了時のイベント * * Alert表示を削除する。 */ public function testsCompleteHandler(event:Event):void { var len:int = systemManager.rawChildren.numChildren; for (var i:int = len - 1; i > -1; i--) { var obj:IFlexDisplayObject = systemManager.rawChildren.getChildAt(i) as IFlexDisplayObject; if (obj is Alert) { PopUpManager.removePopUp(obj); } } } ]]> </mx:Script> <mx:Style> Application { backgroundColor: #3872b2; backgroundGradientColors: #3872b2, #0c1a3d; backgroundGradientAlphas: 1, 1; themeColor: #ffffff; color: #444444; fontFamily: "Myriad Pro Semibold"; fontSize: 12; } </mx:Style> <flexUnitUIRunner:TestRunnerBase id="uiListener" width="100%" height="100%"/> </mx:Application>