Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Регистрация Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Блоги > С миру по строчке

Рейтинг: 5.00. Голосов: 2.

Тестирование кода. Разворачиваем проект с помощью Apache Ant.

Запись от СлаваRa размещена 01.11.2015 в 02:12
Обновил(-а) СлаваRa 01.11.2015 в 15:28

Для многих пишущих на 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
При использовании системы контроля версий такие файлы добавляются в игнорлист, а в систему контроля версий добавляется build.properties.sample - это необходимо чтобы иметь возможность настраивать проект локально

Для тестирования нам понадобится тестовый фреймворк и 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>
Теперь напишем ant файл, который будет запускать тестирование для всех файлов из папки test/src, имя которых завершается Test.as
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>
Наш тестовый проект готов, но для полноты картины в файле build.properties установим путь до flex sdk в переменную FLEX_HOME и создадим первый тест в test/src
SimpleTest.as
Код AS3:
package {
	import org.flexunit.asserts.assertTrue;
	public class SimpleTest {
 
		[test]
		public function alwaysTrue():void {
			assertTrue(true);
		}
	}
}
После чего откроем командную строку в директории проекта и выполним команду ant test, результатом которой будет лог
Код:
...
 [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

Комментарии

 

 


Часовой пояс GMT +4, время: 23:03.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.