exponenta event banner

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 (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