Класс: matlab.unittest.plugins.
Пакет: matlab.unittest.plugins
Распечатайте текст к потоку вывода
print(stream,formatSpec,A1,...,An)
print(
форматирует данные в массивах stream
,formatSpec
,A
1,...,A
n)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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.