Класс: matlab.unittest.plugins.OutputStream
Пакет: matlab.unittest.plugins
Распечатайте текст к потоку вывода
print(stream,formatSpec,A1,...,An)
print( форматирует данные в массивах stream,formatSpec,A1,...,An)A1,...,An согласно formatSpec, и отправляет результат в поток вывода, stream. Присвойте formatSpec и A1,...,An использование того же интерфейса, который вы используете в sprintf и fprintf.
|
Поток вывода, заданный как экземпляр |
|
Формат текста в потоке вывода, заданном как вектор символов. Для получения информации о конструкции |
|
Числовой или символьные массивы, заданные как скаляр, вектор, матрица или многомерный массив. |
В файле в вашей рабочей директории создайте новый класс потока вывода в файле ToFigure.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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.