print

Класс: matlab.unittest.plugins.OutputStream
Пакет: matlab.unittest.plugins

Запишите текст, сгенерированный TestRunnerPlugin экземпляр к потоку вывода

Описание

пример

print(stream,formatSpec,A1,...,An) использует операторы форматирования formatSpec отформатировать данные что matlab.unittest.plugins.TestRunnerPlugin экземпляр генерирует в массивах A1,...,An. Метод затем пишет результат в выход stream.

Для данных, которые не сгенерированы TestRunnerPlugin экземпляр, использовать fprintf записать данные в текстовый файл или экран или использование sprintf отформатировать данные в строку или вектор символов.

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

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

Местоположение, где плагин направляет вывод текста в виде OutputStream экземпляр.

Формат выходных полей, заданных операторов форматирования использования. formatSpec также может включать обычный текст и специальные символы.

Если formatSpec включает буквенный текст, представляющий символы ESC, такие как \n, затем print переводит символы ESC.

formatSpec может быть вектор символов в одинарных кавычках, или, запускающийся в R2016b, строковом скаляре.

Оператор форматирования

Оператор форматирования запускается со знака процента, %, и концы с символом преобразования. Символ преобразования требуется. Опционально, можно задать идентификатор, флаги, ширину поля, точность, и выделить подтипы в операторах между % и символ преобразования. (Пробелы недопустимы между операторами и показаны здесь только для удобочитаемости).

Символ преобразования

Эта таблица показывает символы преобразования, чтобы отформатировать числовые и символьные данные как текст.

Тип значенияПреобразованиеДетали

Целое число, со знаком

%d или %i

Основа 10

Целое число, без знака

%u

Основа 10

%o

Базируйтесь 8 (восьмеричный)

%x

Основывайте 16 (шестнадцатеричных), строчных букв aF

%X

То же самое как %x, прописные буквы AF

Число с плавающей запятой

%f

Представление с фиксированной точкой (Используют оператор точности, чтобы задать количество цифр после десятичной точки.)

%e

Экспоненциальное представление, такое как 3.141593e+00 (Используйте оператор точности, чтобы задать количество цифр после десятичной точки.)

%E

То же самое как %e, но верхний регистр, такой как 3.141593E+00 (Используйте оператор точности, чтобы задать количество цифр после десятичной точки.)

%g

Более компактный из %e или %f, без конечных нулей (Используют оператор точности, чтобы задать количество значительных цифр.)

%G

Более компактный из %E или %f, без конечных нулей (Используют оператор точности, чтобы задать количество значительных цифр.)

Символы или строки

%c

Отдельный символ

%s

Вектор символов или массив строк. Тип синтезируемого текста совпадает с типом formatSpec.

Дополнительные операторы

Дополнительный идентификатор, флаги, ширина поля, точность и операторы подтипа далее задают формат синтезируемого текста.

  • Идентификатор

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

    Пример: ('%3$s %2$s %1$s %2$s','A','B','C') входные параметры печати 'A'BC можно следующим образом: C B A B.

    Примечание: Если входной параметр является массивом, вы не можете использовать идентификаторы, чтобы задать конкретные элементы массива от того входного параметра.

  • Флаги

    '–'

    Лево-выровнять по ширине.
    Пример: %-5.2f
    Пример: %-10s

    '+'

    Всегда распечатывайте символ знака (+ или –) для любого числового значения.
    Пример: %+5.2f
    Право - выравнивает текст.
    Пример: %+10s

    ' '

    Вставьте пробел перед значением.
    Пример: % 5.2f

    '0'

    Заполните к ширине поля нулями перед значением.
    Пример: %05.2f

    '#'

    Измените выбранные числовые преобразования:

    • Для %oX, или %X, распечатайте 0, 0x, или 0X префикс.

    • Для %fE, или %E, распечатайте десятичную точку, даже когда точность 0.

    • Для %g или %G, не удаляйте конечные нули или десятичную точку.

    Пример: %#5.0f

  • Ширина поля

    Минимальное количество символов, чтобы распечатать. Оператор ширины поля может быть номером или звездочкой (*) относиться к входному параметру.

    Когда вы задаете * как оператор ширины поля, другие входные параметры должны обеспечить и ширину и значение, которое будет распечатано. Ширины и значения могут быть парами аргументов или парами в числовом массиве. С * как оператор ширины поля, можно распечатать различные значения с различными ширинами.

    Пример: входные параметры ('%12d',intmax) эквивалентны ('%*d',12,intmax).

    Пример: входные параметры ('%*d',[2 10 5 100]) возвратите '10 100', с двумя местами, выделенными для 10 и пять пробелов для 100. Как альтернатива, также можно задать ширину поля и значения в качестве нескольких аргументов, в качестве в ('%*d',2,10,5,100).

    Функция заполняет к ширине поля пробелами перед значением, если в противном случае не задано флагами.

  • Точность

    Для %fE, или %E

    Количество цифр справа от десятичной точки
    Пример: '%.4f' печать pi как '3.1416'

    Для %g или %G

    Количество значительных цифр
    Пример: '%.4g' печать pi как '3.142'

    Оператор точности может быть номером или звездочкой (*) относиться к аргументу.

    Когда вы задаете * как полевой оператор точности, другие входные параметры должны обеспечить и точность и значение, которое будет распечатано. Точность и значения могут быть парами аргументов или парами в числовом массиве. С * как оператор точности, можно распечатать различные значения к различной точности.

    Когда вы задаете *.* как ширина поля и операторы точности, необходимо задать ширину поля, точность и значения как триплеты.

    Пример: входные параметры ('%.4f',pi) эквивалентны ('%.*f',4,pi).

    Пример: входные параметры ('%6.4f',pi) эквивалентны ('%*.*f',6,4,pi).

    Пример: входные параметры ('%*.*f',6,4,pi,9,6,exp(1)) возвратите '3.1416 2.718282', с 9 и 6 как ширина поля и точность для выхода exp(1).

    Примечание

    Если вы задаете оператор точности для значений с плавающей точкой, который превышает точность входного типа числовых данных, результаты не могут совпадать с входными значениями к точности, которую вы задали. Результат зависит от вашего компьютерного оборудования и операционной системы.

  • Подтипы

    Можно использовать оператор подтипа, чтобы распечатать значение с плавающей точкой как его восьмеричное, десятичное, или шестнадцатеричное значение. Оператор подтипа сразу предшествует символу преобразования. Эта таблица показывает преобразования, которые могут использовать подтипы.

    Тип входного значения

    Подтип и символ преобразования

    Тип выходного значения

    Число с плавающей запятой

    %bx или %bX
    %bo
    %bu

    С двойной точностью шестнадцатеричное, восьмеричное, или десятичное значение
    Пример: %bx печать pi как 400921fb54442d18

    %tx или %tX
    %to
    %tu

    Шестнадцатеричное, восьмеричное, или десятичное значение с одинарной точностью
    Пример: %tx печать pi как 40490fdb

Текст прежде или после операторов форматирования

formatSpec может также включать дополнительный текст перед знаком процента, %, или после символа преобразования. Текст может быть:

  • Обычный текст, чтобы распечатать.

  • Специальные символы, которые вы не можете ввести как обычный текст. Эта таблица показывает, как представлять специальные символы в formatSpec.

    Специальный символ

    Представление

    Одна кавычка

    ''

    Символ процента

    %%

    Обратная косая черта

    \\

    Предупреждение

    \a

    Клавиша Backspace

    \b

    Перевод формата

    \f

    Новая строка

    \n

    Возврат каретки

    \r

    Горизонтальная табуляция

    \t

    Вертикальная табуляция

    \v

    Символ, чей Unicode® числовое значение может быть представлено шестнадцатеричным номером, N

    \xN

    Пример: sprintf('\x5A') возвращает 'Z'

    Символ, числовое значение Unicode которого может быть представлено восьмеричным числом, N

    \N

    Пример: sprintf('\132') возвращает 'Z'

Известное поведение преобразований с операторами форматирования

  • Числовые преобразования распечатывают только действительный компонент комплексных чисел.

  • Если вы задаете преобразование, которое не соответствует данным, таким как текстовое преобразование для числового значения, MATLAB® заменяет заданное преобразование и использует %e.

    Примеры преобразует pi к 3.141593e+00.

  • Если вы применяете текстовое преобразование (любой %c или %s) к целочисленным значениям MATLAB преобразует значения, которые соответствуют кодам допустимого символа к символам.

    Примеры преобразует [65 66 67] к ABC.

Данные, чтобы отобразиться в виде числового, символа или строковых массивов.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string

Примеры

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

В файле в вашей текущей папке создайте класс под названием 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
Для просмотра документации необходимо авторизоваться на сайте