verifyWarning

Класс: matlab.unittest.qualifications. Проверяемый
Пакет: matlab.unittest.qualifications

Проверьте проблемы функции с указанными предупреждениями

Синтаксис

verifyWarning(verifiable,actual,warningIDs)
verifyWarning(verifiable,actual,warningIDs,diagnostic)
[output1,...,outputN] = verifyWarning(___)

Описание

verifyWarning(verifiable,actual,warningIDs) проверяет, что actual выдает предупреждения с идентификаторами warningIDs.

verifyWarning(verifiable,actual,warningIDs,diagnostic) также связывает диагностическую информацию в diagnostic с проверкой. В зависимости от конфигурации исполнителя тестов строение тестирования может отображать диагностику, когда проверка проходит или не проходит. По умолчанию среда отображает диагностику только в случае сбоя проверки. Поведение по умолчанию можно переопределить путем настройки исполнителя тестов. Для примера используйте DiagnosticsOutputPlugin образец для отображения как сбойной, так и проходящей диагностики событий.

[output1,...,outputN] = verifyWarning(___) также возвращает выходные аргументы output1,...,outputN которые создаются при вызове actual.

Входные параметры

verifiable

The matlab.unittest.TestCase образец, который используется для прохождения или непрохождения верификации в сочетании с тестовой средой.

actual

Указатель на функцию для тестирования.

warningIDs

Идентификаторы предупреждения, заданные как вектор символов, массив ячеек из векторов символов или строковые массивы.

diagnostic

Диагностическая информация, относящаяся к проверке, указывается как одно из следующего:

  • Строковые массивы

  • Символьный массив

  • указатель на функцию

  • matlab.unittest.diagnostics.Diagnostic объект

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

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

output1,...,outputN

Выходные аргументы, с 1 по n (если таковые имеются), из actual, возвращается как любой тип. Тип аргумента задается actual список аргументов.

Примеры

расширить все

Создайте TestCase объект для интерактивной проверки.

testCase = matlab.unittest.TestCase.forInteractiveUse;

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

verifyWarning(testCase, @() warning('SOME:warning:id', 'Warning!'), ...
    'SOME:warning:id');
Verification passed.
verifyWarning(testCase, @() warning('SOME:other:id', 'Warning message'), ...
    'SOME:warning:id', 'Did not issue specified warning');
Warning: Warning message 
> In @()warning('SOME:other:id','Warning message')
  In matlab.unittest.internal.constraints/FunctionHandleConstraint/invoke (line 35)
  In matlab.unittest.internal.constraints/WarningQualificationConstraint/invoke (line 41)
  In matlab.unittest.constraints/IssuesWarnings/invoke (line 429)
  In matlab.unittest.constraints.IssuesWarnings>@()constraint.invoke(fcn) (line 540)
  In matlab.unittest.internal.fevalcRespectingHotlinks/hotwrap (line 18)
  In matlab.unittest.internal.fevalcRespectingHotlinks (line 14)
  In matlab.unittest.constraints/IssuesWarnings/invokeCapturingOutput (line 540)
  In matlab.unittest.constraints/IssuesWarnings/issuesExpectedWarnings (line 549)
  In matlab.unittest.constraints/IssuesWarnings/satisfiedBy (line 239)
  In matlab.unittest.internal.constraints/CasualDiagnosticDecorator/satisfiedBy (line 42)
  In matlab.unittest.internal.qualifications/QualificationDelegate/qualifyThat (line 79)
  In matlab.unittest.internal.qualifications/QualificationDelegate/qualifyWarning (line 200)
  In matlab.unittest.qualifications/Verifiable/verifyWarning (line 757) 
Verification failed.
    ----------------
    Test Diagnostic:
    ----------------
    Did not issue specified warning
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyWarning failed.
    --> The function handle did not issue the expected warning(s).
        
        Actual Warning(s):
            --> 'SOME:other:id'
        Expected Warning(s):
            --> 'SOME:warning:id'
    
    Evaluated Function:
      function_handle with value:
    
        @()warning('SOME:other:id','Warning message')

Тестируйте true функция, которая не выдает предупреждений.

testCase = matlab.unittest.TestCase.forInteractiveUse;
verifyWarning(testCase, @true, 'SOME:warning:id', ...
'@true did not issue any warning');
Verification failed.
    ----------------
    Test Diagnostic:
    ----------------
    @true did not issue any warning
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyWarning failed.
    --> The function handle did not issue any warnings.
        
        Expected Warning(s):
            --> 'SOME:warning:id'
    
    Evaluated Function:
      function_handle with value:
    
        @true

Не удалось выполнить тест.

Создайте helper функция, которая генерирует предупреждение и возвращает выход.

function varargout = helper()
    warning('SOME:warning:id', 'Warning!');
    varargout = {123, 'abc'};
end

Функции helper.

testCase = matlab.unittest.TestCase.forInteractiveUse;
[actualOut1, actualOut2] = verifyWarning(testCase, @helper, ...
    'SOME:warning:id');
Verification passed.

Совет

  • Этот метод функционально эквивалентен:

    import matlab.unittest.constraints.IssuesWarnings;
    verifiable.verifyThat(actual,IssuesWarnings(cellstr(warningIDs)));
    

    При использовании IssuesWarnings существует больше функциональности ограничение непосредственно через verifyThat.

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

    • Используйте проверки типа «assumption», чтобы убедиться, что тестовая среда соответствует предусловиям, которые не приводят к непройденному тесту. Нарушение условий приводит к отфильтрованным тестам, а среда тестирования помечает тесты как Incomplete. Для получения дополнительной информации смотрите matlab.unittest.qualifications.Assumable.

    • Используйте проверки типа утверждения, когда условие отказа делает недействительным оставшуюся часть текущего содержания теста, но не препятствует правильному выполнению последующих методов тестирования. При отказе в точке задания текущий метод тестирования становится неудачным и неполным. Для получения дополнительной информации смотрите matlab.unittest.qualifications.Assertable.

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

Введенный в R2013a