Как выполнить модульное тестирование приложений Flex из среды IDE или сценария сборки?

В настоящее время я работаю над приложением с внешним интерфейсом, написанным на Adobe Flex 3. Я знаю о FlexUnit, но мне бы очень хотелось, чтобы это был модуль модульного тестирования для Ant/NAnt и модуль, интегрирующийся с IDE Flex Builder (AKA Eclipse). Один существует?

Кроме того, есть ли другие ресурсы о том, как сделать разработку Flex "правильным способом", кроме примера микроархитектуры Cairngorm?

4 ответа

Решение

Среда тестирования dpUint имеет встроенный тестовый модуль AIR, который можно интегрировать со сценарием сборки.

Есть также мой комплект для автоматизации FlexUnit, который делает то же самое для FlexUnit. Он имеет макрос Ant, который позволяет запускать тесты как часть скрипта Ant, например:

<target name="run-tests" depends="compile-tests">
  <flexunit swf="${build.home}/tests.swf" failonerror="true"/>
</target>

В моем проекте мы используем Maven для создания Flex RIA и серверной части на основе Java. Для создания и тестирования приложения Flex мы используем плагины flex-mojos maven. Они отлично работают для нас, и я очень рекомендую использовать Maven поверх Ant.

При этом, если вы уже используете Ant, может быть немного сложно перейти на Maven. Поэтому, если вы находитесь в таком положении, я бы рекомендовал использовать задачи flexunit, доступные здесь: Ant Task

Обе эти библиотеки делают в основном одно и то же: они запускают в окне сгенерированное приложение mxml для запуска тестов flexunit и открывают сокет-соединение обратно в процесс сборки с помощью тестера JUnit. Удивительно, но это работает довольно хорошо. Единственная проблема заключается в том, что вы не можете запустить его без головы, поэтому, если вы хотите запустить сборку с CI-сервера, вы должны убедиться, что процесс имеет возможность запускать новые окна, иначе он не будет работать.

О том, как правильно разрабатывать приложения Flex, я бы не стал слишком много смотреть на инфраструктуру Cairngorm. Он претендует на то, чтобы показать "лучшую практику" и так далее, но я бы сказал, что все наоборот. Он основан на использовании глобальных переменных и других вещей, которые вы должны избегать. Я изложил некоторые проблемы в своем блоге.

Я бы посоветовал вам взглянуть на фреймворк Mate, в котором есть хорошая документация и хорошие примеры. Он использует Flex в полной мере, не полагаясь на глобальные переменные, такие как Cairngorm и PureMVC, и позволяет писать гораздо более несвязанный код.

Альтернативой FlexUnit являются инструменты тестирования AsUnit. Существуют версии для ActionScript 2 и 3. Он также имеет хорошую интеграцию с Project Sprouts, который представляет собой инструмент сборки для Flex и Flash, аналогичный ant, однако он использует задачи ruby ​​rake и включает превосходное управление зависимостями по типу maven.

Однако нет интеграции с IDE, о которой я знаю.

Другие вопросы по тегам