matlab.unittest.plugins.StopOnFailuresPlugin class

Пакет: matlab.unittest.plugins

Плагин, чтобы отладить непройденные тесты

Описание

StopOnFailuresPlugin класс обеспечивает плагин, чтобы помочь отладить непройденные тесты. Когда исполнитель тестов с StopOnFailuresPlugin сталкивается с отказом проверки или непойманной ошибкой, это приостанавливает выполнение теста и помещает MATLAB® в режим отладки.

Когда исполнитель тестов с этим плагином сталкивается с отказом и остановками, можно использовать команды отладки MATLAB, такие как dbstepdbcont, и dbquit, исследовать причину непройденного теста. В случае непойманной ошибки в тесте, в то время как плагин останавливает тестовый прогон, чтобы сообщить об ошибке, будут ограничены возможности отладки, потому что ошибка разрушает стек.

Конструкция

matlab.unittest.plugins.StopOnFailuresPlugin создает плагин, чтобы отладить непройденные тесты.

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

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

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

Реагировать ли на отказы предположения в виде false или true. Когда значением является true, плагин реагирует на отказы предположения. Когда значением является false, плагин игнорирует отказы предположения.

Свойства

IncludeAssumptionFailures

Реагировать ли на отказы предположения в виде false или true. Когда значением является true, плагин реагирует на отказы предположения. Когда значением является false, плагин игнорирует отказы предположения. Можно установить это свойство с помощью tf входной параметр.

Примеры

свернуть все

Чтобы исследовать причину непройденных тестов, добавьте StopOnFailuresPlugin экземпляр к исполнителю тестов.

В вашей текущей папке создайте ExampleTest тестирование класса.

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.plugins.StopOnFailuresPlugin

suite = testsuite('ExampleTest');
runner = TestRunner.withTextOutput;   
results = runner.run(suite);
Running ExampleTest

================================================================================
Verification failed in ExampleTest/testOne.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyEqual failed.
    --> The numeric values are not equal using "isequaln".
    --> Failure table:
            Actual        Expected               Error               RelativeError    
            ______    ________________    ____________________    ____________________
        
            3.1416    3.14159265358979    7.34641020683213e-06    2.33843499679617e-06
    
    Actual Value:
       3.141600000000000
    Expected Value:
       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 экземпляр бегуну и повторно выполненный тесты. Во время тестового прогона, когда отказ происходит, MATLAB вводит режим отладки в источнике отказа.

runner.addPlugin(StopOnFailuresPlugin)
result = runner.run(suite);
Running ExampleTest

================================================================================
Verification failed in ExampleTest/testOne.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyEqual failed.
    --> The numeric values are not equal using "isequaln".
    --> Failure table:
            Actual        Expected               Error               RelativeError    
            ______    ________________    ____________________    ____________________
        
            3.1416    3.14159265358979    7.34641020683213e-06    2.33843499679617e-06
    
    Actual Value:
       3.141600000000000
    Expected Value:
       3.141592653589793
    ------------------
    Stack Information:
    ------------------
    In C:\work\ExampleTest.m (ExampleTest.testOne) at 6
================================================================================
Test execution paused due to failure. To terminate the test run, use dbquit. To continue, use dbcont.

Можно исследовать причину непройденного теста. Например, исследуйте переменные в рабочей области.

whos
  Name          Size            Bytes  Class          Attributes

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

Смотрите, передает ли проваленный тест, когда вы задаете относительную погрешность 100*eps. Тест перестал работать даже с заданным допуском.

testCase.verifyEqual(act,exp,'RelTol',100*eps)
================================================================================
Verification failed in ExampleTest/testOne.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyEqual failed.
    --> The numeric 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 Value:
       3.141600000000000
    Expected Value:
       3.141592653589793
    ------------------
    Stack Information:
    ------------------
    In C:\work\ExampleTest.m (ExampleTest.testOne) at 6
================================================================================

Протестируйте, если различие между фактическими и ожидаемыми значениями в 0.001. Проваленный тест передает с заданной абсолютной погрешностью.

testCase.verifyEqual(act,exp,'AbsTol',0.001)

Можно использовать dbquit закончить тестовый прогон или dbcont выходить из режима отладки и остальной части запуска тестов. Например, выйдите из отладки.

dbquit

Ввести режим отладки для тестов, которые перестали работать предположением, таким как testTwo в ExampleTest класс, набор IncludingAssumptionFailures к true когда вы создаете плагин.

runner.addPlugin(StopOnFailuresPlugin(...
    'IncludingAssumptionFailures',true))

Если вы теперь повторно выполняете тесты, MATLAB вводит режим отладки для обоих testOne и testTwo.

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

| | |

Введенный в R2013b