Тестирование кода. Разворачиваем проект с помощью 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)