flexunit с чистым проектом ActionScript в Flex Builder 3

Если вы создаете чистый проект ActionScript во Flex Builder 3 и хотите выполнить модульное тестирование с помощью flexunit, какой вариант лучше?

Встроенный конструктор Flex откажется создавать файл mxml, содержащий компонент TestRunnerBase, так как это чистый проект ActionScript (Flex не разрешен). Невозможно добавить файл mxml в список "Приложения ActionScript" в настройках проекта.

Прямо сейчас я вижу два варианта, оба нежелательных.

  1. Добавьте файл mxml модульного тестирования в проект и создайте настройку внешнего инструмента для его сборки и запуска. Это подход, который я сейчас использую, и он отлично работает, за исключением того, что интерактивная отладка невозможна.
  2. Создайте новый проект Flex только для тестового mxml-файла и добавьте каталог src основного проекта в качестве дополнительного исходного каталога в опциях сборки. Мне не нравится этот подход, потому что он требует, чтобы я держал файл mxml в отдельном дереве каталогов от всех других исходных файлов в дополнение к уродливости ведения двух проектов.

9 ответов

Решение

Там всегда ASUnit.

Попробуйте 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. У них также есть набор для асинхронного бета-тестирования.

Другие вопросы по тегам