matlab.unittest.plugins.FailOnWarningsPlugin class

Пакет: 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