Тестирование кода. Разворачиваем проект с помощью Apache Ant.
Для многих пишущих на ActionScript3 тема тестирования покрыта мраком. Многие хотят использовать тесты, но не знают как начать... поэтому наша цель - создать проект, который не зависит от платформы и редактора, легко разворачивается и пригоден для многократного использования.
Если у Вас не установлен Apache Ant, то необходимо его скачать, распаковать и добавить в переменные окружения путь_к_папке_куда_он_был_распакован/bin.
Первым делом создадим файл содержащий локальные настройки проекта
build.propertis
Код:
# Путь к flex sdk
FLEX_HOME =
# URL до архива с тестовым фреймворком
url.flexunit = http://www.eu.apache.org/dist/flex/flexunit/4.2.0/binaries/apache-flex-flexunit-4.2.0-4.12.0-bin.zip
# Путь к директории временных файлов
tmp = ${basedir}/tmp
# Путь к библиотекам проекта
lib = ${basedir}/lib
# Путь к библиотекам, которые необходимы для тестирования
lib.flexunit = ${lib}/flexunit
# Путь к тестовой директории
test = ${basedir}/test
# Путь к тестовому коду проекта
test.src = ${test}/src
# Путь к отчетам, которые будут генерироваться при тестировании
test.report = ${test}/report
Для тестирования нам понадобится тестовый фреймворк и ant библиотеки, которые упростят написание сборочных файлов. Для того чтобы не искать их по просторам интернета, а так же иметь возможность обновления при выходе новых версий, напишем ant файл, который будет скачивать все необходимое при отсутствии в проекте
downloads.xml
Код:
<?xml version="1.0" encoding="utf-8" ?>
<project name="downloads" default="main">
<property file="build.properties"/>
<target name="main" depends="-init, download flexunit"/>
<target name="clean">
<delete dir="${tmp}" includeEmptyDirs="true" failonerror="false"/>
<delete dir="${lib.flexunit}" includeEmptyDirs="true" failonerror="false"/>
</target>
<target name="download flexunit" depends="-check flexunit libs" unless="flexunit.libs.exists">
<mkdir dir="${tmp}"/>
<get src="${url.flexunit}" dest="${tmp}/flexunit.zip"/>
<unzip src="${tmp}/flexunit.zip" dest="${tmp}"/>
<copy todir="${lib.flexunit}" verbose="true">
<fileset dir="${tmp}/flexunit/"/>
</copy>
<delete dir="${tmp}" includeEmptyDirs="true" failonerror="false"/>
</target>
<target name="-init">
<mkdir dir="${lib.flexunit}"/>
</target>
<target name="-check flexunit libs" description="Checks if flexunit libs and jars exists.">
<fileset dir="${lib.flexunit}" id="fileset"/>
<pathconvert refid="fileset" property="flexunit.libs.exists" setonempty="false"/>
</target>
</project>
tests.xml
Код:
<?xml version="1.0" encoding="utf-8" ?>
<project name="tests" basedir="." default="main">
<property file="build.properties"/>
<taskdef resource="flexTasks.tasks" classpath="${FLEX_HOME}/ant/lib/flexTasks.jar"/>
<taskdef name="flexunit" classname="org.flexunit.ant.tasks.FlexUnitTask">
<classpath>
<fileset dir="${lib.flexunit}">
<include name="flexUnitTasks*.jar"/>
</fileset>
</classpath>
</taskdef>
<target name="main">
<delete dir="${test.report}" includeEmptyDirs="true" failonerror="false"/>
<mkdir dir="${test.report}"/>
<flexunit debug="true" workingDir="${test}" toDir="${test.report}" haltonfailure="false" verbose="true" localTrusted="true">
<testSource dir="${test.src}">
<include name="**/*Test.as" />
</testSource>
<library dir="${lib.flexunit}">
<include name="**/flexunit-*.swc"/>
</library>
</flexunit>
<junitreport todir="${test.report}">
<fileset dir="${test.report}">
<include name="TEST-*.xml" />
</fileset>
<report format="frames" todir="${test.report}" />
</junitreport>
</target>
</project>
build.xml
Код:
<?xml version="1.0" encoding="utf-8" ?>
<project name="build" basedir="." default="main">
<property file="build.properties"/>
<target name="main" depends="-init">
</target>
<target name="test" depends="-init">
<ant antfile="${basedir}/downloads.xml"/>
<ant antfile="${basedir}/tests.xml"/>
</target>
<target name="-init">
<mkdir dir="${lib}"/>
<mkdir dir="${test}"/>
<mkdir dir="${test.src}"/>
</target>
</project>
SimpleTest.as
package { import org.flexunit.asserts.assertTrue; public class SimpleTest { [test] public function alwaysTrue():void { assertTrue(true); } } }
Код:
... [flexunit] Suite: SimpleTest [flexunit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0,012 sec [flexunit] [flexunit] Results : [flexunit] [flexunit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0,012 sec [flexunit] ...
Всего комментариев 0
Комментарии
Последние записи от СлаваRa
- Тестирование кода. Разворачиваем проект с помощью Gradle. (01.11.2015)
- Тестирование кода. Разворачиваем проект с помощью Apache Ant. (01.11.2015)
- [FlashDevelop] Postfix Code Completion (07.09.2015)
- из Flash на HaXe, из HaXe во Flash при участии NME (13.04.2013)
- Подключение ADOBE ASC 2.0 компилятора к FlashDevelop. Русская инструкция. (11.11.2012)













