onFailure

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

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

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

Синтаксис

onFailure(fixture,failureDiag)
onFailure(fixture,failureDiag,'IncludingAssumptionFailures',tf)

Описание

пример

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 (logical 0) или true (logical 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