Пакет: matlab.unittest.plugins
Интерфейс, который определяет, куда отправить вывод текста
OutputStream
интерфейс является абстрактным интерфейсным классом, который можно использовать в качестве базового класса, чтобы задать, где плагины направляют свой вывод текста. Чтобы создать пользовательский поток вывода, реализуйте print
метод, который правильно обрабатывает информацию о форматированном тексте среда тестирования, передает ему. Много ориентированных на текст плагинов принимают OutputStream
чтобы перенаправить текст, они производят конфигурируемым способом.
печать | Распечатайте текст к потоку вывода |
Указатель. Чтобы узнать, как классы Handle влияют на операции копирования, см. раздел "Копирование объектов".
В файле в вашей рабочей директории создайте новый класс потока вывода в файле 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
отображает диагностическую информацию независимо от того, сталкиваются ли тесты с условиями отказа.
fprintf
| matlab.unittest.plugins
| matlab.unittest.plugins.ToStandardOutput
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.