exponenta event banner

класс plugin matlab.unittest.plugins.StopOnImentingPlugin

Пакет: matlab.unittest.plugins

Подключаемый модуль для отладки ошибок тестирования

Описание

StopOnFailuresPlugin класс предоставляет подключаемый модуль, помогающий отладить ошибки тестирования. Добавление StopOnFailuresPlugin для выполнения теста runner приостанавливает выполнение теста, если он сталкивается с ошибкой квалификации или непроверенной ошибкой, и переводит MATLAB ® в режим отладки.

Если StopOnFailuresPlugin обнаруживает ошибку квалификации или неподтвержденную ошибку в тесте, можно использовать команды отладки MATLAB, такие как dbstep, dbcont, и dbquit, чтобы выяснить причину неуспешного завершения испытания. В случае непроверенной ошибки в тесте нельзя использовать dbup для перехода к источнику сбоя теста, поскольку ошибка нарушает работу стека.

Строительство

matlab.unittest.plugins.StopOnFailuresPlugin создает подключаемый модуль для отладки ошибок тестирования.

matlab.unittest.plugins.StopOnFailuresPlugin('IncludingAssumptionFailures',tf) указывает, следует ли реагировать на ошибки допущений. По умолчанию StopOnFailuresPlugin реагирует только на непроверенные ошибки и ошибки проверки, утверждения и неустранимые ошибки квалификации утверждения. Однако когда 'IncludingAssumptionFailures' имеет значение true, плагин также реагирует на ошибки допущений.

Входные аргументы

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

Индикатор для реагирования на допущения отказов, указанный как логический false или true. Когда это значение равно trueиспытательный питатель реагирует на ошибки допущений. Когда значение равно false, плагин игнорирует ошибки допущений.

Свойства

IncludeAssumptionFailures

Когда это свойство имеет значение true, экземпляр реагирует на ошибки допущений. Когда значение равно false, экземпляр игнорирует ошибки допущений. IncludeAssumptionFailures свойство - false по умолчанию. Чтобы указать свойство как true, используйте IncludingAssumptionFailures ввод при построении экземпляра.

Копирование семантики

Ручка. Сведения о том, как классы обработки влияют на операции копирования, см. в разделе Копирование объектов.

Примеры

свернуть все

В рабочей папке создайте файл ExampleTest.m содержит следующий класс теста.

classdef ExampleTest < matlab.unittest.TestCase
    methods(Test)
        function testOne(testCase)  % Test fails
            act = 3.1416;
            exp = pi;
            testCase.verifyEqual(act, exp)
        end
        function testTwo(testCase)  % Test does not complete
            testCase.assumeEqual(5, 4)
        end
    end
end

В командной строке создайте набор тестов из ExampleTest класс и испытательный бегун.

import matlab.unittest.TestRunner
import matlab.unittest.TestSuite
import matlab.unittest.plugins.StopOnFailuresPlugin

suite = TestSuite.fromClass(?ExampleTest);
runner = TestRunner.withTextOutput;

Запустите тесты.

result = runner.run(suite);
Running ExampleTest

================================================================================
Verification failed in ExampleTest/testOne.

    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyEqual failed.
    --> The values are not equal using "isequaln".
    --> Failure table:
                Actual        Expected               Error               RelativeError    
                ______    ________________    ____________________    ____________________
            
                3.1416    3.14159265358979    7.34641020683213e-06    2.33843499679617e-06
    
    Actual double:
           3.141600000000000
    Expected double:
           3.141592653589793

    ------------------
    Stack Information:
    ------------------
    In C:\work\ExampleTest.m (ExampleTest.testOne) at 6
================================================================================
.
================================================================================
ExampleTest/testTwo was filtered.
    Details
================================================================================
.
Done ExampleTest
__________

Failure Summary:

     Name                 Failed  Incomplete  Reason(s)
    ==================================================================
     ExampleTest/testOne    X                 Failed by verification.
    ------------------------------------------------------------------
     ExampleTest/testTwo              X       Filtered by assumption.

В результате квалификации в тестовом классе первый тест проваливается, а второй тест не завершается.

Добавить StopOnFailuresPlugin к питателю и запустите тесты.

runner.addPlugin(StopOnFailuresPlugin)
result = runner.run(suite);
Running ExampleTest
Test execution paused due to failure. Either click here or execute DBUP to shift context to its source: line 6 of "C:\work\ExampleTest.m".

Во время выполнения теста, когда происходит сбой, MATLAB переходит в режим отладки.

Щелкните слово гиперссылки 'here' для переноса контекста отладки в источник работы. При необходимости сделайте окно команд текущим.

In workspace belonging to ExampleTest>ExampleTest.testOne at 6

Проверьте переменные в рабочей области.

whos
  Name          Size            Bytes  Class           Attributes

  act           1x1                 8  double                    
  exp           1x1                 8  double                    
  testCase      1x1               112  ExampleTest               

Теперь вы можете исследовать причину сбоя теста.

Например, проверьте, проходит ли тест при указании относительного допуска 100*eps.

testCase.verifyEqual(act,exp,'RelTol',100*eps)
Verification failed in ExampleTest/testOne.

    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyEqual failed.
    --> The values are not equal using "isequaln".
    --> The error was not within relative tolerance.
    --> Failure table:
                Actual        Expected               Error               RelativeError         RelativeTolerance  
                ______    ________________    ____________________    ____________________    ____________________
            
                3.1416    3.14159265358979    7.34641020683213e-06    2.33843499679617e-06    2.22044604925031e-14
    
    Actual double:
           3.141600000000000
    Expected double:
           3.141592653589793

    ------------------
    Stack Information:
    ------------------
    In C:\work\ExampleTest.m (ExampleTest.testOne) at 6
================================================================================

Тест завершается неуспешно даже с заданным допуском.

Выход из режима отладки.

dbquit
================================================================================
Verification failed in ExampleTest/testOne.

    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyEqual failed.
    --> The values are not equal using "isequaln".
    --> Failure table:
                Actual        Expected               Error               RelativeError    
                ______    ________________    ____________________    ____________________
            
                3.1416    3.14159265358979    7.34641020683213e-06    2.33843499679617e-06
    
    Actual double:
           3.141600000000000
    Expected double:
           3.141592653589793

    ------------------
    Stack Information:
    ------------------
    In C:\work\ExampleTest.m (ExampleTest.testOne) at 6
================================================================================
.
================================================================================
ExampleTest/testTwo was filtered.
    Details
================================================================================
.
Done ExampleTest
__________

Failure Summary:

     Name                 Failed  Incomplete  Reason(s)
    ==================================================================
     ExampleTest/testOne    X                 Failed by verification.
    ------------------------------------------------------------------
     ExampleTest/testTwo              X       Filtered by assumption.

Переход в режим отладки для тестов, завершившихся сбоем по предположению, например, testTwo в ExampleTest класс, включить 'IncludingAssumptionFailures' для подключаемого модуля.

runner = TestRunner.withTextOutput;
runner.addPlugin(StopOnFailuresPlugin(...
    'IncludingAssumptionFailures', true))

При запуске тестового питателя вводится режим отладки для обоих testOne и testTwo.

Представлен в R2013b