matlab.unittest.plugins. Класс StopOnFailuresPlugin

Пакет: matlab.unittest.plugins

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

Описание

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

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

Если StopOnFailuresPlugin сталкивается с непойманной ошибкой в тесте, вы не можете использовать 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