flexunit с чистым проектом ActionScript в Flex Builder 3
-
21-08-2019 - |
Вопрос
Если вы создаете чистый проект ActionScript в Flex Builder 3 и хотите провести модульное тестирование с помощью flexunit, какой вариант является лучшим?
Встроенный Flex builder откажется создавать файл mxml, содержащий компонент TestRunnerBase, поскольку это чистый проект ActionScript (Flex не допускается).Невозможно добавить файл mxml в список "Приложения ActionScript" в настройках проекта.
Прямо сейчас я вижу два варианта, оба нежелательных.
- Добавьте файл mxml модульного тестирования в проект и создайте внешнюю программу установки для его сборки и запуска.Это подход, который я использую сейчас, и он работает нормально, за исключением того, что интерактивная отладка невозможна.
- Создайте новый проект Flex только для тестового файла mxml и добавьте каталог src основного проекта в качестве дополнительного исходного каталога в параметрах сборки.Мне не нравится этот подход, потому что он требует, чтобы я хранил файл mxml в отдельном дереве каталогов от всех других исходных файлов в дополнение к неудобству ведения двух проектов.
Решение
Всегда есть Единое целое.
Другие советы
В итоге я поместил файл модульного теста mxml в исходный проект, создал новый проект Flex, удалил каталог src и заменил его папкой, связанной с Eclipse, в каталог src проекта ActionScript.Эта настройка, кажется, работает нормально.
Мы сделали нечто подобное, чтобы заставить 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 {}
Может быть, вы могли бы использовать flexunit.textui.ТестРаннер, который выводит результат на консоль.
Мы включили весь код, который хотим протестировать, в библиотечные проекты.Затем у нас просто есть отдельный проект для наших тестов, который является гибким проектом, который зависит от тестируемого проекта.
Попробуй AS3Unit ( модуль as3 ) из libspark.У них также есть набор для асинхронного бета-тестирования.
Попробуйте AS3Unit из libspark.У них также есть набор для асинхронного бета-тестирования.
удалите элемент 'excludedEntries' в файле вашего проекта .actionScriptProperties должен работать, я использую этот способ для создания файла mxml в моем чистом проекте actionscript.
Вы можете посмотреть, как мы настройте сборку для Robotlegs используя FlexUnit4 и их вспомогательные задачи.
Для контроля версий мы удаляем все файлы проекта Flex / Flash Builder.папки src и test настроены как пути src.Тесты выполняются с помощью сборки ant.В качестве альтернативы можно настроить второй проект с бегуном, если у вас есть визуальный тестовый бегун.
Он был очень эффективен и прост в использовании многими участниками.