onFailure

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

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

Синтаксис

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

Описание

пример

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

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

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

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

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

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

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

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

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

Примеры

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

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

classdef SampleOnFailureTest < matlab.unittest.TestCase
    methods(TestMethodSetup)
        function addFailureDiag(testCase)
            testCase.onFailure('Failure Detected');
        end
    end
    methods (Test)
        function verificationFailTest(testCase)
            testCase.onFailure(@datetime)
            testCase.verifyEqual(42,13)
        end
        function passingTest(testCase)
            testCase.assertTrue(true)
        end
        function assumptionFailTest(testCase)
            testCase.assumeEmpty(rand(2))
        end
        function assertionFailTest(testCase)
            act = randi(100,1,15);
            floor = randi(100,1,15);
            f = figure; hold on;
            plot(1:length(act),act,1:length(floor),floor);
            legend('actual','floor')
            testCase.addTeardown(@close,f)
            
            import matlab.unittest.diagnostics.FigureDiagnostic
            testCase.onFailure(FigureDiagnostic(f,'Formats','png'))
            
            testCase.assertGreaterThan(act,floor)
        end
    end
end

В командной строке, запущенной тесты. Класс SampleOnFailureTest имеет эти результаты.

  • Диагностический 'Failure Detected' сообщения отображается для каждого теста с верификацией, утверждением или отказом критического утверждения, потому что addFailureDiag вызывает onFailure в функции в блоке TestMethodSetup.

  • Тест verificationFailTest добавляет другую диагностику после отказа, который отображает текущую дату и время.

  • Тест assumptionFailTest перестал работать предположением. Поэтому сообщение 'Failure Detected' не отображается.

  • Тест assertionFailTest отображает данные на графике. Если тест перестал работать, среда тестирования сохраняет график.

results = runtests('SampleOnFailureTest');
Running SampleOnFailureTest

================================================================================
Verification failed in SampleOnFailureTest/verificationFailTest.

    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyEqual failed.
    --> The values are not equal using "isequaln".
    --> Failure table:
            Actual    Expected    Error     RelativeError  
            ______    ________    _____    ________________
        
            42        13          29       2.23076923076923
    
    Actual Value:
        42
    Expected Value:
        13

    ----------------------
    Additional Diagnostic:
    ----------------------
    Failure Detected

    ------------------
    Stack Information:
    ------------------
    In C:\work\SampleOnFailureTest.m (SampleOnFailureTest.verificationFailTest) at 10
================================================================================
..
================================================================================
SampleOnFailureTest/assumptionFailTest was filtered.
Details
================================================================================
.
================================================================================
Assertion failed in SampleOnFailureTest/assertionFailTest and it did not run to completion.

    ---------------------
    Framework Diagnostic:
    ---------------------
    assertGreaterThan failed.
    --> Each element must be greater than each corresponding element of the minimum value array.
        
        Failing Indices:
             1     2     3     4     5     6     9    12    13    14
    
    Actual Value:
        55    68     4    81    75    13    53    33    55    40    42    19    26     3    93
    Minimum Value (Exclusive):
        66    94    17    93    80    58    45    26    76    23     7    77    68    72    65

    ----------------------
    Additional Diagnostic:
    ----------------------
    Failure Detected

    ----------------------
    Additional Diagnostic:
    ----------------------
    Figure saved to:
    --> C:\Temp\070a23db-3903-4abb-9976-2d29ec0a1e38\Figure_c2528bb2-6d72-48d5-a8ed-2a9d5ae7b3ee.png

    ------------------
    Stack Information:
    ------------------
    In C:\work\SampleOnFailureTest.m (SampleOnFailureTest.assertionFailTest) at 28
================================================================================
.
Done SampleOnFailureTest
__________

Failure Summary:

     Name                                      Failed  Incomplete  Reason(s)
    =======================================================================================
     SampleOnFailureTest/verificationFailTest    X                 Failed by verification.
    ---------------------------------------------------------------------------------------
     SampleOnFailureTest/assumptionFailTest                X       Filtered by assumption.
    ---------------------------------------------------------------------------------------
     SampleOnFailureTest/assertionFailTest       X         X       Failed by assertion.

Советы

  • Чтобы добавить диагностику для каждого теста в вашем классе, вызовите метод onFailure от функции в блоке TestMethodSetup.

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

Введенный в R2017b

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