matlab.unittest.plugins.OutputStream class

Пакет: matlab.unittest.plugins

Интерфейс, который определяет, куда отправить вывод текста

Описание

OutputStream интерфейс является абстрактным интерфейсным классом, который можно использовать в качестве базового класса, чтобы задать, где плагины направляют свой вывод текста. Чтобы создать пользовательский поток вывода, реализуйте print метод, который правильно обрабатывает информацию о форматированном тексте среда тестирования, передает ему. Много ориентированных на текст плагинов принимают OutputStream экземпляр, чтобы перенаправить текст они производят конфигурируемым способом.

matlab.unittest.plugins.OutputStream классом является handle класс.

Методы

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

Примеры

свернуть все

В файле в вашей текущей папке создайте класс под названием ToFigure это перенаправляет сменный выход фигуре и отображает его в поле списка в фигуре. Задайте Figure и ListBox свойства представлять фигуру и указатель на поле списка, соответственно.

classdef ToFigure < matlab.unittest.plugins.OutputStream
    
    properties(SetAccess = private)
        Figure
    end
    properties(Access = private)
        ListBox
    end

Необходимо реализовать print метод для любого подкласса OutputStream. В этом примере метод создает новую фигуру (при необходимости), форматирует входящий текст, и затем добавляет его в поток вывода.

    methods
        function print(stream,formatSpec,varargin)
            % Create the figure
            if isempty(stream.Figure) || ~ishghandle(stream.Figure)
                stream.createFigure
            end
            newStr = sprintf(formatSpec,varargin{:});
            oldStr = strjoin(stream.ListBox.String','\n');
            
            % Create the full message
            fullStr = strjoin([oldStr,newStr]);
            fullStrArray = strsplit(fullStr,'\n','CollapseDelimiters',false);
            
            % Set the string and selection
            stream.ListBox.String = fullStrArray';
            stream.ListBox.Value = numel(fullStrArray);
            drawnow
        end
    end

В methods блокируйтесь с private доступ, реализуйте вспомогательный метод под названием createFigure это создает фигуру и поле списка, используемое плагином.

    methods(Access = private)
        function createFigure(stream)
            stream.Figure = figure(...
                'Name',         'Unit Test Output',...
                'WindowStyle',  'docked');
            
            stream.ListBox = uicontrol(...
                'Parent',       stream.Figure,...
                'Style',        'listbox',...
                'String',       {},...
                'Units',        'normalized',...
                'Position',     [.05 .05 .9 .9],...
                'Max',          2, ...
                'FontName',     'Monospaced',...
                'FontSize',     13);
        end
    end
end

Сохраните ToFigure класс. Теперь в вашей текущей папке, создайте файл с именем ExampleTest.m содержа следующий тестовый класс. verifyEqual проверка в testOne вызывает непройденный тест. Верификация в testTwo передачи. Тест, соответствующий testThree передачи, не производя выход.

classdef ExampleTest < matlab.unittest.TestCase
    methods(Test)
        function testOne(testCase)  % Test fails
            testCase.verifyEqual(5,4,'Testing 5==4');
        end
        function testTwo(testCase)  % Test passes
            testCase.verifyEqual(5,5,'Testing 5==5');
        end
        function testThree(testCase)
            % test code
        end
    end
end

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

import matlab.unittest.TestRunner
import matlab.unittest.plugins.DiagnosticsValidationPlugin

suite = testsuite('ExampleTest');

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

runner = TestRunner.withTextOutput;

Создайте DiagnosticsValidationPlugin экземпляр, который явным образом указывает, что его выход должен перейти к фигуре, использующей ToFigure поток вывода.

plugin = DiagnosticsValidationPlugin(ToFigure);

Добавьте плагин в бегуна и запустите тесты.

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

================================================================================
Verification failed in ExampleTest/testOne.

    ----------------
    Test Diagnostic:
    ----------------
    Testing 5==4

    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyEqual failed.
    --> The values are not equal using "isequaln".
    --> Failure table:
                Actual    Expected    Error    RelativeError
                ______    ________    _____    _____________
            
                5         4           1        0.25         
    
    Actual Value:
             5
    Expected Value:
             4

    ------------------
    Stack Information:
    ------------------
    In C:\work\ExampleTest.m (ExampleTest.testOne) at 4
================================================================================
...
Done ExampleTest
__________

Failure Summary:

     Name                 Failed  Incomplete  Reason(s)
    ==================================================================
     ExampleTest/testOne    X                 Failed by verification.

Только непройденные тесты производят выход для экрана. По умолчанию, TestRunner.withTextOutput использует DiagnosticsOutputPlugin к отображаемому выводу на экране.

В дополнение к выводу текста по умолчанию, отображаемому на экране, DiagnosticsValidationPlugin выход направлен к прикрепленной фигуре. Рисунок показывает этот текст.

------------------------------
Validation of Test Diagnostic:
------------------------------
Testing 5==4
------------------------------
Validation of Test Diagnostic:
------------------------------
Testing 5==5

DiagnosticsValidationPlugin отображает диагностическую информацию независимо от того, сталкиваются ли тесты с условиями отказа.

Введенный в R2014a