exponenta event banner

assumeNotSet

Класс: matlab.mock.StartCase
Пакет: matlab.mock

Предположим, что свойство не установлено

Описание

пример

assumeNotSet(testcase,behavior) предполагает, что свойство не было задано.

пример

assumeNotSet(testcase,behavior,diagnostic) также связывает диагностическую информацию в diagnostic с квалификацией. В зависимости от конфигурации тестового питателя платформа тестирования может отображать диагностику при прохождении или сбое квалификации. По умолчанию инфраструктура отображает диагностику только при сбое квалификации. Поведение по умолчанию можно переопределить, настроив тестовый питатель. Например, используйте DiagnosticsOutputPlugin для отображения диагностики сбоев и прохождения событий.

Входные аргументы

развернуть все

Экземпляр тестового случая, указанный как matlab.mock.TestCase объект.

Поведение макета, указанного как matlab.mock.PropertyBehavior экземпляр. Создание экземпляра matlab.mock.PropertyBehavior, получить доступ к свойству объекта поведения.

Пример: behavior.PropertyFoo

Отображаемая диагностическая информация, указанная как строковый массив, символьный массив, дескриптор функции или matlab.unittest.diagnostics.Diagnostic объект. Диагностические значения могут быть нескалярными. Дополнительные сведения см. в разделе matlab.unittest.diagnostics.Diagnostic.

Пример: "My diagnostic message."

Пример: @() datetime('now')

Примеры

развернуть все

Создание макета с неявным интерфейсом для интерактивного использования. Интерфейс включает в себя PropertyFoo и PropertyBar свойства. Назначение значения PropertyFoo.

testCase = matlab.mock.TestCase.forInteractiveUse;
[mock,behavior] = testCase.createMock('AddedProperties', ...
    ["PropertyFoo","PropertyBar"]);
mock.PropertyFoo = 123;

Предположим, что PropertyBar не был задан.

testCase.assumeNotSet(behavior.PropertyBar);
An assumption was met.

Создание макета с неявным интерфейсом для интерактивного использования. Интерфейс включает в себя PropertyFoo и PropertyBar свойства. Назначение значения PropertyFoo.

testCase = matlab.mock.TestCase.forInteractiveUse;
[mock,behavior] = testCase.createMock('AddedProperties', ...
    ["PropertyFoo","PropertyBar"]);
mock.PropertyFoo = 123;

Предположим, что PropertyFoo не был задан. Отображение диагностической информации при отказе.

testCase.assumeNotSet(behavior.PropertyFoo, ...
    'PropertyFoo should not have been set.');
An assumption was not met.
    ----------------
    Test Diagnostic:
    ----------------
    PropertyFoo should not have been set.
    ---------------------
    Framework Diagnostic:
    ---------------------
    assumeNotSet failed.
    --> Property 'PropertyFoo' was unexpectedly set to the specified value 1 time(s).
    --> All observed property set operation(s) where the property was set to any value are:
            <Mock>.PropertyFoo = 123
    
    Specified property set operation:
    PropertySetBehavior
        <Mock>.PropertyFoo = <IsAnything constraint>
Assumption failed.

Совет

Для проверки соответствия среды тестирования предварительным условиям, которые в противном случае не приведут к сбою теста, используйте квалификационные требования. Предполагаемые отказы приводят к отфильтрованным тестам, и платформа тестирования помечает тесты как Incomplete.

  • Используйте условия проверки для создания и записи отказов без создания исключения. Так как проверки не вызывают исключений, все содержимое теста выполняется до завершения даже при возникновении ошибок проверки. Как правило, проверки являются основной квалификацией для единичного теста, поскольку они обычно не требуют раннего выхода из теста. Используйте другие типы квалификации для проверки на нарушение предварительных условий или неправильной настройки теста.

  • Используйте условия утверждения, когда условие отказа аннулирует остальную часть текущего содержимого теста, но не препятствует надлежащему выполнению последующих методов тестирования. Сбой в точке утверждения помечает текущий метод тестирования как неуспешный и неполный.

  • Используйте условия неустранимого утверждения, чтобы прервать тестовый сеанс при сбое. Эти требования полезны, когда режим отказа настолько фундаментален, что нет смысла продолжать тестирование. Эта квалификация также полезна, когда отрыв приспособления не восстанавливает состояние MATLAB ® правильно, и предпочтительно прервать тестирование и начать новую сессию.

Альтернативы

Использование assumeNotSet функционально эквивалентен использованию отрицаемого matlab.mock.constraints.WasSet ограничение с помощью assumeThat способ Assumable класс. Например, следующие кодовые блоки функционально эквивалентны.

% Using the assumeNotSet method
testCase.assumeNotSet(behavior.PropertyBar);

% Using the WasSet constraint with assumeThat method
import matlab.mock.constraints.WasSet;
testCase.assumeThat(behavior.PropertyBar,~WasSet);
Однако при использовании WasSet ограничение. Например, можно указать свойство, которое не было задано определенное количество раз.

Представлен в R2017a