Сборка и запуск FlexUnit из командной строки - PullRequest
2 голосов
/ 21 августа 2010

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

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

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

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

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

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

Но это отвратительно.

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

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

Ответы [ 2 ]

1 голос
/ 23 января 2014

В этом сообщении есть решение: http://devnet.jetbrains.com/message/5507979#5507979. Работает на меня как чемпион.

1 голос
/ 04 октября 2010

Насколько я знаю, ваши единственные варианты запуска 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>

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

...