onFailure

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

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

Описание

пример

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

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

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

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

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

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

  • The 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