2010-08-20 3 views
2

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

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

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

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

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

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

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

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

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

ответ

1

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

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