Класс: matlab.unittest.plugins. OutputStream
Пакет: matlab.unittest.plugins
Распечатайте текст к потоку вывода
печать (поток, formatSpec, A1...)
форматирует данные в массивах print(stream,formatSpec,A1,...,An) A1,...,An согласно formatSpec и отправляет результат в поток вывода, stream. Присвойте formatSpec и A1,...,An с помощью того же интерфейса, который вы используете для sprintf и fprintf.
|
Поток вывода, заданный как экземпляр класса |
|
Формат текста в потоке вывода, заданном как вектор символа. Для получения информации о конструкции |
|
Числовой или символьные массивы, заданные как скаляр, вектор, матрица или многомерный массив. |
В файле в вашей рабочей директории создайте новый класс потока вывода в файле ToFigure.m m. Этот класс позволяет сменному выводу быть перенаправленным фигуре.
classdef ToFigure < matlab.unittest.plugins.OutputStream properties(SetAccess=private) Figure end properties(Access=private) ListBox end
Этот класс использует два свойства. Figure является фигурой, которая получает и отображает вывод. ListBox является указателем на поле списка, которое отображает текст.
В том же файле добавьте следующий блок methods.
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 = [oldStr,newStr];
fullStrCell = strsplit(fullStr,'\n','CollapseDelimiters',false);
% Set the string and selection
stream.ListBox.String = fullStrCell';
stream.ListBox.Value = numel(fullStrCell);
drawnow
end
endНеобходимо реализовать метод print для любого подкласса OutputStream. В этом примере метод создает новую фигуру (при необходимости), форматирует входящий текст, и затем добавляет его к потоку вывода.
В том же файле добавьте следующий блок methods, содержащий функцию помощника, чтобы создать фигуру.
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В новом файле в вашей рабочей папке создайте ExampleTest.m, содержащий следующий тестовый класс.
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
Проверка verifyEqual в testOne вызывает непройденный тест. Проверки в testOne и testTwo включают экземпляр matlab.unittest.diagnostics.StringDiagnostic.
В командной строке создайте тестовый набор из класса ExampleTest.
import matlab.unittest.TestSuite import matlab.unittest.TestRunner import matlab.unittest.plugins.DiagnosticsValidationPlugin suite = TestSuite.fromClass(?ExampleTest);
Создайте исполнителя тестов, который отображает вывод к командному окну.
runner = TestRunner.withTextOutput;
Создайте DiagnosticsValidationPlugin, который явным образом указывает, что его вывод должен перейти к фигуре через поток вывода ToFigure.
plugin = DiagnosticsValidationPlugin(ToFigure);
Добавьте плагин к TestRunner и запустите комплект.
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 double:
5
Expected double:
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 отображает диагностическую информацию независимо от того, сталкиваются ли тесты с условиями отказа.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.