exponenta event banner

verifyFail

Класс: matlab.unittest.qualifications.Verifable
Пакет: matlab.unittest.qualifications

Создать безусловный сбой проверки

Синтаксис

verifyFail(verifiable)
verifyFail(verifiable,diagnostic)

Описание

verifyFail(verifiable) создает безусловный сбой проверки при обнаружении.

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

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

verifiable

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

diagnostic

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

  • строковый массив

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

  • дескриптор функции

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

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

Примеры

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

Примером использования этого метода является функция обратного вызова, которая не должна выполняться в данном сценарии. Тест может подтвердить, что это не происходит путем безусловного выполнения сбоя при достижении кодового пути.

Создание класса дескрипторов, MyHandle, с SomethingHappened событие.

classdef MyHandle < handle
    events
        SomethingHappened
    end
end

Создание файла, ListenerTest, на пути MATLAB ®, который содержит следующееTestCase класс.

classdef ListenerTest < matlab.unittest.TestCase
    methods(Test)
        function testDisabledListeners(testCase)
            h = MyHandle;
            
            % Add a listener to a test helper method
            listener = h.addlistener('SomethingHappened', ...
                @testCase.shouldNotGetCalled);
            
            % Passing scenario (code path is not reached)
            %%%%%%%%%%%%%%%%%%%%
            % Disabled listener should not invoke callbacks
            listener.Enabled = false;
            h.notify('SomethingHappened');
            
            % Failing scenario (code path is reached)
            %%%%%%%%%%%%%%%%%%%%
            % Enabled listener invoke callback and fail
            listener.Enabled = true;
            h.notify('SomethingHappened');
        end
    end
    
    methods
        function shouldNotGetCalled(testCase, ~, ~)
            % A test helper callback method that should not execute
            testCase.verifyFail('This listener callback should not have executed');
        end
    end
    
end

В командной строке запустите тест.

run(ListenerTest);
Running ListenerTest

================================================================================
Verification failed in ListenerTest/testDisabledListeners.

    ----------------
    Test Diagnostic:
    ----------------
    This listener callback should not have executed

    ------------------
    Stack Information:
    ------------------
    In C:\Desktop\ListenerTest.m (ListenerTest.shouldNotGetCalled) at 27
    In C:\\Desktop\ListenerTest.m (@(varargin)testCase.shouldNotGetCalled(varargin{:})) at 8
    In C:\Desktop\ListenerTest.m (ListenerTest.testDisabledListeners) at 20
================================================================================
.
Done ListenerTest
__________

Failure Summary:

     Name                                Failed  Incomplete  Reason(s)
    =================================================================================
     ListenerTest/testDisabledListeners    X                 Failed by verification.

Совет

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

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

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

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

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