onFailure

Класс: фиксатор
Пакет: matlab.unittest.fixtures

Динамически добавляйте диагностику отказов во время настройки фиксатора и отключения

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

Описание

пример

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

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 и среда тестирования выполняет диагностику после отказов в верификации, отказов в проверке типа «assertion», неустранимых отказов в проверке типа «критическое утверждение» и неоткрытых исключений. Однако среда тестирования не выполняет диагностику при отказах предположений. Чтобы выполнить дополнительную диагностику при отказах предположений, задайте это значение следующим 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