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

Пакет: matlab.unittest.plugins

Плагин, чтобы провалить тесты это предупреждения о проблемах

Описание

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

Плагин FailOnWarningsPlugin не производит отказ если:

  • Тест составляет предупреждение посредством ограничения, такого как IssuesWarnings или IssuesNoWarnings, независимо от того, удовлетворено ли ограничение или нет.

  • Предупреждение отключено. Например, если вы отключаете предупреждение с помощью SupressedWarningsFixture.

Конструкция

matlab.unittest.plugins.FailOnWarningsPlugin создает плагин, который проваливает любой тест, который выдает предупреждение.

matlab.unittest.plugins.FailOnWarningsPlugin('Ignoring',warnIDs) создает плагин, который не перестал работать для заданных идентификаторов предупреждения, warnIDs.

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

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

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

Пример: FailOnWarningsPlugin('Ignoring',{'MATLAB:singularMatrix'})

Свойства

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

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

Примеры

свернуть все

Создайте функцию solve, чтобы решить набор линейных уравнений. Существует намеренная ошибка в функции solve — вызов assert, который проверяет, сингулярна ли матрица, должен использовать rcond вместо det.

function x = solve(A,b)

assert(abs(det(A)) > 1e-12,... % intentional bug for illustrative purposes
    'The matrix is singular or nearly singular'); 

x = A\b;

Создайте следующий тестовый класс. В testTwo матрица A сингулярна, но поскольку существует ошибка в функции solve, вызов assert не отлавливает его.

classdef TestSolve < matlab.unittest.TestCase
    
    methods(Test)
        function testOne(testCase)
            A = eye(3);
            b = [3; 4; 1];
            testCase.verifyEqual(solve(A b),b);
        end

        function testTwo(testCase)
            A = [1e-100 0; 0 1e100];
            b = [5; 5];
            expX = [5e100 5e-100];
            testCase.verifyEqual(solve(A,b),expX);
        end
    end
end

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

import matlab.unittest.TestRunner;
import matlab.unittest.TestSuite;
import matlab.unittest.plugins.FailOnWarningsPlugin;

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

Добавьте плагин FailOnWarningsPlugin и запустите тесты. testTwo перестал работать, потому что функция solve выдает предупреждение. Без FailOnWarningsPlugin функция solve выдает предупреждение, но обе тестовых передачи.

runner.addPlugin(FailOnWarningsPlugin);
result = runner.run(suite);
Running TestSolve
.Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.000000e-200.
.
================================================================================
Verification failed in TestSolve/testTwo.

    ---------------------
    Framework Diagnostic:
    ---------------------
    TestSolve/testTwo issued warnings:    
        
        ---------------------------
        MATLAB:nearlySingularMatrix
        ---------------------------
        Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.000000e-200.
            In C:\work\solve.m (solve) at 6
            In C:\work\TestSolve.m (TestSolve.testTwo) at 14

    ------------------
    Stack Information:
    ------------------
    In C:\Program Files\MATLAB\R2015b\toolbox\matlab\testframework\+matlab\+unittest\+plugins\FailOnWarningsPlugin.m (FailOnWarningsPlugin.teardownTestMethod) at 164
================================================================================

Done TestSolve
__________

Failure Summary:

     Name               Failed  Incomplete  Reason(s)
    ================================================================
     TestSolve/testTwo    X                 Failed by verification.

Советы

  • Установите отображение трассировки стека предупреждения с помощью функции warning. Например, warning('off','backtrace').

  • Отключите предупреждения с помощью класса SuppressedWarningsFixture.

Введенный в R2015b