matlab.unittest.plugins.FailOnWarningsPlugin class

Пакет: matlab.unittest.plugins

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

Описание

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

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

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

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

Конструкция

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

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

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

расширить все

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

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

Свойства

расширить все

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

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

Указатель. Чтобы узнать, как классы handle влияют на операции копирования, см. раздел «Копирование объектов».

Примеры

свернуть все

Создайте solve функция для решения множества линейных уравнений. Существует преднамеренная ошибка в solve function - функция 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 есть ошибка function, the 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