onFailure

Класс: matlab.unittest.fixtures.Fixture
Пакет: matlab.unittest.fixtures

Динамически добавьте диагностику для непройденных тестов

В релизе R2019a, onFailure метод имеет защищенный доступ.

Описание

пример

onFailure(fixture,failureDiag) добавляет диагностика для отказов во время настройки фиксатора и стандартных программ отключения. Если среда тестирования сталкивается с отказом, то она выполняет диагностику. По умолчанию эта диагностика выполняется после отказов верификации, отказов утверждения, отказов критического утверждения и неперехваченных исключений.

onFailure(fixture,failureDiag,'IncludingAssumptionFailures',tf) указывает, выполняет ли среда тестирования также диагностику после отказов предположения. Чтобы выполнить диагностику после отказов предположения также, установите tf к true.

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

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

Экземпляр фиксатора, заданного как matlab.unittest.fixtures.Fixture.

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

Пример: @() disp('Failure Detected')

Пример: matlab.unittest.diagnostics.ScreenshotDiagnostic

Реагируйте на отказы предположения, заданные как false логический 0) или true логический 1). По умолчанию этим значением является false и среда тестирования выполняет диагностику после отказов верификации, отказов утверждения, отказов критического утверждения и неперехваченных исключений. Однако среда тестирования не выполняет диагностику после отказов предположения. Чтобы выполнить дополнительную диагностику после отказов предположения, задайте это значение как true.

Примеры

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

В вашей текущей рабочей папке создайте FormatHexFixture фиксатор. Среда тестирования сталкивается с отказом утверждения во время настройки фиксатора и отображает диагностическое сообщение после отказа.

classdef FormatHexFixture < matlab.unittest.fixtures.Fixture
    properties (Access=private)
        OriginalFormat
    end
    methods
        function setup(fixture)
            fixture.OriginalFormat = get(0,'Format');
            set(0,'Format','hex')
            fixture.addTeardown(@set,0,'Format',fixture.OriginalFormat)
            
            fixture.onFailure(['Failure detected in ' mfilename('class')])
            fixture.assertEqual(get(0,'Format'),'short')
        end
    end
end

Создайте следующий тестовый класс, SampleTest.m, в вашей текущей рабочей папке.

classdef SampleTest < matlab.unittest.TestCase
    methods (Test)
        function test1(testCase)
            testCase.applyFixture(FormatHexFixture);
            actStr = getColumnForDisplay([1;2;3], 'Small Integers');
            expStr = ['Small Integers  '
                '3ff0000000000000'
                '4000000000000000'
                '4008000000000000'];
            testCase.verifyEqual(actStr, expStr)
        end
    end
end

function str = getColumnForDisplay(values, title)
elements = cell(numel(values)+1, 1);
elements{1} = title;
for idx = 1:numel(values)
    elements{idx+1} = displayNumber(values(idx));
end
str = char(elements);
end

function str = displayNumber(n)
str = strtrim(evalc('disp(n);'));
end

Запустите тест. Отметьте onFailure диагностика появляется под "Дополнительной Диагностикой" заголовок.

results = runtests('SampleFixtureTest');
Running SampleFixtureTest

================================================================================
Assertion failed in SampleFixtureTest/test1 and it did not run to completion.

    ---------------------
    Framework Diagnostic:
    ---------------------
    assertEqual failed.
    --> The character arrays are not equal.
    
    Actual char:
        hex
    Expected char:
        short

    ----------------------
    Additional Diagnostic:
    ----------------------
    Failure Detected in FormatHexFixture

    ------------------
    Stack Information:
    ------------------
    In C:\work\FormatHexFixture.m (FormatHexFixture.setup) at 11
================================================================================
.
Done SampleFixtureTest
__________

Failure Summary:

     Name                     Failed  Incomplete  Reason(s)
    ===================================================================
     SampleFixtureTest/test1    X         X       Failed by assertion.

Вопросы совместимости

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

Поведение изменяется в R2019a

Смотрите также

Введенный в R2017b