Вопрос

Похоже, что большинство сред тестирования XUnit предоставляют утверждения для тех случаев, когда вы хотите утверждать, что данная операция вызовет исключение (или ошибку на языке AS3). Есть ли какой-то «стандартный» способ сделать это, который я упускаю из виду, который объяснило бы отсутствие утверждения AssertError(), включенного в FlexUnit?

Я знаю, КАК реализовать такую ​​вещь, и, вероятно, добавлю ее в свой FlexUnit (с открытым исходным кодом!), но это кажется таким вопиющим упущением, что мне остается задаваться вопросом, не делаю ли я это неправильно.

У кого-нибудь есть мысли по этому поводу?

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

Решение

Редактирую 02.05.2010: Теперь я бы рекомендовал использовать ФлексЮнит 4.Он использует расширяемую систему метаданных, поддерживает ожидаемые исключения, а также поддерживает работу в среде сервера интеграции без использования AIR.

Редактировать: Вам следует взглянуть на плавно, который был создан людьми, которым достаточно FlexUnit и его ограничений.В него могут быть встроены некоторые из этих типов утверждений.

Я абсолютно согласен.Фактически, во FlexUnit отсутствует несколько полезных методов (assertEvent, AssertArrayEquals и т. д.).Я знаю, вы сказали, что знаете, как это реализовать, но не стесняйтесь использовать мой:

public static function assertError(message : String, func : Function, errorClass : Class = null, errorMessage : String = null, errorCodes : Array = null) : Error 
{
    _assertionsMade++;

    if (errorClass == null) errorClass = Error;

    try
    {
        func();
    }
    catch(ex : Error)
    {
        if (!(ex is errorClass))
        {
            fail("Expected error of type '" + getQualifiedClassName(errorClass) + "' but was '" + getQualifiedClassName(ex) + "'");
        }

        if (errorMessage != null && ex.message != errorMessage)
        {
            fail("Expected error with message '" + errorMessage + "' but was '" + ex.message + "'");
        }

        if (errorCodes != null && errorCodes.indexOf(ex.errorID) == -1)
        {
            fail("Expected error with errorID '" + errorCodes.join(" or ") + "' but was '" + ex.errorID + "'");
        }

        return ex;
    }

    if (message == null)
    {
        message = "Expected error of type '" + getQualifiedClassName(errorClass) + "' but none was thrown"
    }

    fail(message);

    return null;
}

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

FlexUnit 4 хорошо сочетается с hamcrest-as3.hamcrest имеет средства сопоставления утверждений об ошибках

Возможно, вы захотите рассмотреть возможность использования этого инструмента утверждения.

Он не заменяет структуру xxxunit, а просто облегчает ваши утверждения, делает их более английскими и меньшим количеством кода.

https://github.com/osher/should.as

var p:Person = new Person();

//assume a method p.sayHi()
p.sayHi.should().throwError('name is not set');

p.name = "Radagast";
p.sayHi.should().not.throwError();

Веселиться :)

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