Соберите и запустите FlexUnit из командной строки

Я создаю приложение, используя ActionScript3 с Flash Builder 4 в качестве среды IDE.

Среда IDE поддерживает среду модульного тестирования под названием «FlexUnit».

Я могу без проблем создавать и запускать тесты в среде IDE.

После долгих мучений я понял, как создавать модульные тесты в виде swf из командной строки. Я могу указать браузер или флеш-плеер на swf, и тесты запустятся.

Но для автоматизированной системы сборки это бесполезно: я хотел бы собрать тесты, запустить их и собрать/проанализировать результаты, чтобы определить, какие тесты, если таковые имеются, не работают.

Я могу представить себе некоторые хакерские действия: взламывать базовые библиотеки FlexUnit, чтобы выводить вывод в stderr, а не только в консоль IDE. Взломайте какой-нибудь скрипт, который указывает браузеру на swf, считает до 60, убивает браузер и проверяет stderr.

Но это ужасно.

Я должен верить, что есть какой-то способ сборки и запуска из командной строки, который хорошо работает с автоматизированными системами сборки.

Дальнейшее осложнение: я относительный нуб с ActionScript (~ 1 месяц). Мой опыт - C ++, make-файлы и т. Д. Все, что мне нужно было сделать, чтобы получить тесты даже для сборки вне ide (файл build.xml, ant), было для меня полным греческим, просто вырезал и вставлял из примеров, которые я мог найти .


person Doug Banks    schedule 20.08.2010    source источник


Ответы (2)


Насколько я знаю, у вас есть единственные варианты запуска swf в браузере или в автономном плеере. Запуск в проигрывателе не должен быть проблемой для вашей среды непрерывной интеграции, если вы можете получить результаты теста и выйти из приложения.

Чтобы распечатать результаты теста на стандартный вывод, вам нужно добавить прослушиватель текста в ваш экземпляр ядра testunit.

core.addListener( TextListener.getDefaultTextListener( LogEventLevel.DEBUG ) );

Чтобы выйти из приложения после выполнения тестов...

System.exit(0);

Например, ваш mxml-файл верхнего уровня может выглядеть так...

<?xml version="1.0" encoding="utf-8"?>
<mx:Application 
    xmlns:mx="http://www.adobe.com/2006/mxml" 
    creationComplete="runMe()" 
    xmlns:adobe="http://www.adobe.com/2009/flexUnitUIRunner"
    >
    <mx:Script>
        <![CDATA[
            import org.flexunit.runner.FlexUnitCore;
            //import org.flexunit.listeners.UIListener;
            //import org.flexunit.listeners.CIListener;
            import org.flexunit.internals.TextListener;
            import mx.logging.LogEventLevel;
            import flash.system.System
            import unit_tests.TestAuthentication.TestAuthentication

            private var core:FlexUnitCore;

            public function runMe():void {
                core = new FlexUnitCore();
                //core.addListener(new UIListener(uiListener));
                //core.addListener(new CIListener());
                core.addListener( TextListener.getDefaultTextListener( LogEventLevel.DEBUG ) );
                core.run( TestAuthentication );
                System.exit(0);
            }
        ]]>
    </mx:Script>
</mx:Application>

Затем все, что вам нужно сделать, это проанализировать вывод. Это не так элегантно, как хотелось бы, но должно работать.

person Chris    schedule 04.10.2010