exponenta event banner

verifyWarning

Класс: matlab.unittest.qualifications.Verifable
Пакет: 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

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.

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

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

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

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

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