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>