Вопрос

Я устанавливаю функциональный тестовый набор для приложения, который загружает внешний файл конфигурации. Прямо сейчас я использую функцию Addasync Flexunit, чтобы загрузить ее, а затем снова тестировать, если содержимое указывает на услуги, которые существуют и могут быть доступны.

Беда с этим заключается в том, что имеющие этот вид двух (или более) этапов означает, что я управляю всеми моими тестами в контексте одного теста с десятками утверждений, что похоже на своего рода вырожденный способ использовать рамки и делает ошибки труднее найти. Есть ли способ иметь что-то вроде асинхронной установки? Есть ли еще одна структура тестирования, которая обрабатывает это лучше?

Это было полезно?

Решение

Предполагая, что вы используете FlexUnit 4, Addasync можно назвать методом [BeForeClass]:

public class TestFixture
{
    [BeforeClass]
    public static function fixtureSetup() : void
    {
        // This static method will be called once for all the tests
        // You can also use addAsync in here if your setup is asynchronous
        // Any shared state should be stored in static members
    }

    [Test]
    public function particular_value_is_configured() : void
    {
        // Shared state can be accessed from any test
        Assert.assertEquals(staticMember.particularValue, "value");
    }
}

Сказав это, тестирующий код, который обращается к файлу, - это действительно тест интеграции. Я тоже вряд ли в состоянии спорить против использования Asmock :)

Другие советы

Это довольно легко, но взял меня 2 дня, чтобы понять это. Решение:

Сначала вам нужно где-то создать статическую вари.

 public static var stage:Stage

Существует FlexUnitApplication.As, созданный фреймой FlexUnit, а на функции OnCreationComplete () вы можете установить этап к статической ссылке, созданной ранее:

private function onCreationComplete():void
    {
        var testRunner:FlexUnitTestRunnerUIAS=new FlexUnitTestRunnerUIAS();
        testRunner.portNumber=8765; 
        this.addChild(testRunner); 
        testStageRef.stage=stage //***this is what I've added
        testRunner.runWithFlexUnit4Runner(currentRunTestSuite(), "testsuitename");
    }

И когда вы получите доступ к сцене в программе, вы должны заменить его на:

if(stage==null) stage=testStageRef.stage

Похоже, вам нужно удалить зависимость загрузки на внешний файл. В значительной степени все айнхронные испытания могут быть удалены благодаря использованию Макияные рамки. Asmock это потрясающий выбор для Flex. Это позволит вам подделать объект Urloader и вернуть фальшивые конфигурации, чтобы запустить ваши тесты. Перемагивание поможет вам писать гораздо лучшие тесты на единицу, как вы можете издеваться над всеми зависимостями синхронными или асинхронными.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top