flexunit с чистым проектом ActionScript в Flex Builder 3
Если вы создаете чистый проект ActionScript во Flex Builder 3 и хотите выполнить модульное тестирование с помощью flexunit, какой вариант лучше?
Встроенный конструктор Flex откажется создавать файл mxml, содержащий компонент TestRunnerBase, так как это чистый проект ActionScript (Flex не разрешен). Невозможно добавить файл mxml в список "Приложения ActionScript" в настройках проекта.
Прямо сейчас я вижу два варианта, оба нежелательных.
- Добавьте файл mxml модульного тестирования в проект и создайте настройку внешнего инструмента для его сборки и запуска. Это подход, который я сейчас использую, и он отлично работает, за исключением того, что интерактивная отладка невозможна.
- Создайте новый проект Flex только для тестового mxml-файла и добавьте каталог src основного проекта в качестве дополнительного исходного каталога в опциях сборки. Мне не нравится этот подход, потому что он требует, чтобы я держал файл mxml в отдельном дереве каталогов от всех других исходных файлов в дополнение к уродливости ведения двух проектов.
9 ответов
Попробуйте AS3Unit из libspark. У них также есть набор для асинхронного бета-тестирования.
Мы выделили весь код, который хотим протестировать, в библиотечные проекты. Тогда у нас просто есть отдельный проект для наших тестов, который представляет собой гибкий проект, который зависит от тестируемого проекта.
Я закончил тем, что поместил файл mxml модульного теста в исходный проект, создал новый проект Flex, удалил каталог src и заменил его папкой, связанной с Eclipse, на каталог src проекта ActionScript. Эта настройка, кажется, работает нормально.
Возможно, вы могли бы использовать flexunit.textui.TestRunner, который выводит результат на консоль.
Мы сделали нечто подобное, чтобы FlexUnit работал с CruiseControl.net (сервер непрерывной интеграции).
В нашей реализации приведенный ниже код выполняется в обработчике FlexEvent.CREATION_COMPLETE класса Application.
Как вы выводите результаты модульных тестов, полностью зависит от вас. Наша реализация использовалась как с AIR, так и с Zinc3, и обе они выводят XML-представление, дружественное к NUnit, и затем выходят из приложения (с кодом выхода -1, если какие-либо тесты не пройдены).
// import mx.core.Application;
// import flexunit.framework.*;
// class AutomatedTestHarness extends Application implements TestListener
private function creationCompleteHandler(event : Event) : void
{
this._result = new TestResult();
this._result.addListener(this);
var testSuite : TestSuite = new TestSuite();
this.addUnitTests(testSuite);
testSuite.runWithResult(_result);
}
/**
* Implement these as part of TestResult.addListener
* If you want to output xml after the tests run, do so here
* (Tip: Count tests in endTest and compare the count to testSuite.countTestCases()
* to find out when all tests have completed)
*/
function startTest(test : Test) : void {}
function endTest(test : Test) : void {}
function addError(test : Test, error : Error) : void {}
function addFailure(test : Test, error : AssertionFailedError) : void {}
Вы можете проверить, как мы настроили сборку для Robotlegs, используя FlexUnit4 и их задачи CI ant.
Для контроля версий мы удаляем все файлы проекта Flex/Flash Builder. Папки src и test настроены как пути src. Тесты проходят через сборку муравья. В качестве альтернативы можно настроить второй проект с бегуном, если вы используете визуальный тестовый бегун.
Он был очень эффективным и простым в использовании для многих участников.
Удаление элемента 'excEntries' в файле.actionScriptProperties вашего проекта должно работать, я использую этот способ для создания mxml-файла в моем чистом проекте actionscript.
Попробуйте AS3Unit из libspark. У них также есть набор для асинхронного бета-тестирования.