Пакет: matlab.unittest.plugins
Плагин, который представляет отчет результата испытаний
TestReportPlugin
создает плагин, который направляет TestRunner
, чтобы представить отчет результата испытаний. Используя этот плагин, можно произвести читаемые и archivable протоколы испытаний.
Инстанцируйте TestReportPlugin
с помощью одного из его статических методов:
Чтобы представить отчет .docx
, используйте статический метод producingDOCX
.
Чтобы представить отчет PDF
, используйте статический метод producingPDF
.
IncludeCommandWindowText
Индикатор, если вывод текста из Командного окна включенfalse
(значение по умолчанию) | true
Это свойство доступно только для чтения.
Индикатор, если вывод текста из Командного окна включен, задал как false
или true
(logical
0 или 1). По умолчанию IncludeCommandWindowText
является false
, и вывод текста из Командного окна исключен из отчета. Чтобы включать текст Command Window в отчет, задайте IncludeCommandWindowText
как true
во время сменной конструкции.
IncludePassingDiagnostics
Индикатор, если диагностика для передающих событий включенаfalse
(значение по умолчанию) | true
Это свойство доступно только для чтения.
Индикатор, если диагностика для передающих событий включена, задал как false
или true
(logical
0 или 1). По умолчанию IncludePassingDiagnostics
является false
, и диагностика от передающих событий исключена из вывода. Чтобы включать диагностику от передающих событий в выводе, задайте IncludePassingDiagnostics
как true
во время сменной конструкции.
LoggingLevel
— Максимальный уровень многословия для регистрируемой диагностики включен плагиномmatlab.unittest.Verbosity.Terse
(значение по умолчанию) | объект перечисления matlab.unittest.Verbosity
Это свойство доступно только для чтения.
Максимальный уровень многословия для регистрируемой диагностики, включенной плагином, возвращенным как объект перечисления matlab.unittest.Verbosity
. Плагин включает диагностику, которая регистрируется на этом уровне и ниже. По умолчанию этим значением свойства является matlab.unittest.Verbosity.Terse
. Можно задать различный уровень журналирования во время сменной конструкции.
Регистрируемая диагностика является диагностикой, которую вы предоставляете к среде тестирования вызов метода Fixture.log
или TestCase.log
.
producingDOCX | Плагин построений, который представляет отчет .docx |
producingHTML | Плагин построений, который представляет отчет .html |
producingPDF | Плагин построений, который представляет отчет .pdf |
Указатель. Чтобы узнать, как классы Handle влияют на операции копирования, см. раздел "Копирование объектов".
Генерация отчета результата испытаний в .docx формате
Создайте тестовый набор из двух тестовых файлов, запустите комплект и сгенерируйте отчет .docx
результатов.
Создайте новый файл в своей рабочей папке под названием ScriptBasedTest.m
, содержащий следующий тестовый скрипт. Скрипт включает два сбоя и неполные тесты.
%% Test double class expSolution = 'double'; actSolution = ones; assert(isa(actSolution,expSolution)) %% Test single class expSolution = 'single'; actSolution = ones('single'); assert(isa(actSolution,expSolution)) %% Test uint16 class expSolution = 'uint16'; actSolution = ones('uint16'); assert(isa(actSolution,expSolution)) %% Test that fails assert(false==true); %% Another test that fails assert(strcmp('correlation','causation'))
Создайте файл с именем ClassBasedTest.m
, содержащий следующий тестовый класс. Класс включает провальный тест, который, с параметризацией, приводит к девяти не пройдено результатам испытаний.
classdef ClassBasedTest < matlab.unittest.TestCase properties (ClassSetupParameter) generator = {'twister','combRecursive','multFibonacci'}; end properties (MethodSetupParameter) seed = {0,123,4294967295}; end properties (TestParameter) dim1 = struct('small',1,'medium',2,'large',3); dim2 = struct('small',2,'medium',3,'large',4); dim3 = struct('small',3,'medium',4,'large',5); type = {'single','double'}; end methods (TestClassSetup) function ClassSetup(testCase,generator) orig = rng; testCase.addTeardown(@rng,orig) rng(0, generator) end end methods (TestMethodSetup) function MethodSetup(testCase,seed) orig = rng; testCase.addTeardown(@rng,orig) rng(seed) end end methods (Test, ParameterCombination='sequential') function testSize(testCase,dim1,dim2,dim3) testCase.verifySize(rand(dim1,dim2,dim3),[dim1 dim2 dim3]) end end methods (Test, ParameterCombination='pairwise') function testRepeatable(testCase,dim1,dim2,dim3) state = rng; firstRun = rand(dim1,dim2,dim3); rng(state) secondRun = rand(dim1,dim2,dim3); testCase.verifyEqual(firstRun,secondRun); end end methods (Test) function testClass(testCase,dim1,dim2,type) testCase.verifyClass(rand(dim1,dim2,type),type) end end end
В командной строке создайте тестовый набор из обоих тестовых файлов.
import matlab.unittest.TestRunner; import matlab.unittest.TestSuite; import matlab.unittest.plugins.TestReportPlugin; suite = testsuite({'ScriptBasedTest','ClassBasedTest'})
suite = 1×284 Test array with properties: Name ProcedureName TestClass BaseFolder Parameterization SharedTestFixtures Tags Tests Include: 17 Unique Parameterizations, 0 Shared Test Fixture Classes, 0 Tags.
Создайте тихого исполнителя тестов, так, чтобы не было никакого вывода информации к командному окну. Создайте TestReportPlugin
, который отправляет вывод в файл MyTestReport.docx
.
runner = TestRunner.withNoPlugins;
docxFile = 'MyTestReport.docx';
plugin = TestReportPlugin.producingDOCX(docxFile);
Добавьте плагин в TestRunner
и запустите комплект.
runner.addPlugin(plugin); result = runner.run(suite)
Generating report. Please wait. Preparing content for the report. Adding content to the report. Writing report to file. Report has been saved to: C:\work\MyTestReport.docx result = 1×284 TestResult array with properties: Name Passed Failed Incomplete Duration Details Totals: 282 Passed, 2 Failed, 2 Incomplete. 0.73477 seconds testing time.
Откройте протокол испытаний.
open(docxFile)
Сгенерируйте отчет pdf, который включает передающую диагностику
Создайте тестовый набор из функционального теста, запустите комплект и сгенерируйте отчет результатов. Включайте передающую диагностику и вывод текста к Командному окну.
Создайте новый файл в своей рабочей папке под названием FunctionBasedTest.m
, содержащий следующий функциональный тест. Тестовый файл включает два проваливающих теста.
%% Main function to generate tests function tests = FunctionBasedTest tests = functiontests(localfunctions); end %% Test Functions function passingTest(testCase) actSolution = 13*3+7*5; expSolution = 74; verifyEqual(testCase,actSolution,expSolution) end function failingTest(testCase) actSolution = single(1); verifyTrue(testCase,actSolution) end function anotherPassingTest(testCase) verifyClass(testCase,string('some text'),'string') end function anotherFailingTest(testCase) verifyTrue(testCase,strcmp('42','everything')) end
В командной строке создайте тестовый набор из FunctionBasedTest.m
. Создайте исполнителя тестов, который отображает вывод к командному окну с помощью плагина по умолчанию.
import matlab.unittest.TestRunner; import matlab.unittest.TestSuite; import matlab.unittest.plugins.TestReportPlugin; suite = testsuite('FunctionBasedTest'); runner = TestRunner.withTextOutput;
Создайте TestReportPlugin
, который отправляет вывод в файл MyTestReport2.pdf
. Включайте передающую диагностику и вывод текста из Командного окна в отчете.
pdfFile = 'MyTestReport2.pdf'; plugin = TestReportPlugin.producingPDF(pdfFile,... 'IncludingPassingDiagnostics',true,'IncludingCommandWindowText',true);
Добавьте плагин в TestRunner
и запустите комплект.
runner.addPlugin(plugin); result = runner.run(suite);
Running FunctionBasedTest . ================================================================================ Verification failed in FunctionBasedTest/failingTest. --------------------- Framework Diagnostic: --------------------- verifyTrue failed. --> The value must be logical. It is of type "single". Actual single: 1 ------------------ Stack Information: ------------------ In C:\Work\FunctionBasedTest.m (failingTest) at 15 ================================================================================ .. ================================================================================ Verification failed in FunctionBasedTest/anotherFailingTest. --------------------- Framework Diagnostic: --------------------- verifyTrue failed. --> The value must evaluate to "true". Actual logical: 0 ------------------ Stack Information: ------------------ In C:\Work\FunctionBasedTest.m (anotherFailingTest) at 23 ================================================================================ . Done FunctionBasedTest __________ Failure Summary: Name Failed Incomplete Reason(s) =================================================================================== FunctionBasedTest/failingTest X Failed by verification. ----------------------------------------------------------------------------------- FunctionBasedTest/anotherFailingTest X Failed by verification. Generating report. Please wait. Preparing content for the report. Adding content to the report. Writing report to file. Report has been saved to: C:\Work\MyTestReport2.pdf
Откройте протокол испытаний.
open(pdfFile)
В файле в вашей текущей рабочей папке создайте тестовый класс FigurePropTest
. Если метод тестирования failingTest
перестал работать (он всегда делает в этом примере), он использует FigureDiagnostic
, чтобы сохранить фигуру, таким образом, можно исследовать его позже.
classdef FigurePropTest < matlab.unittest.TestCase properties TestFigure end methods(TestMethodSetup) function createFigure(testCase) testCase.TestFigure = figure; end end methods(TestMethodTeardown) function closeFigure(testCase) close(testCase.TestFigure) end end methods(Test) function defaultCurrentPoint(testCase) cp = testCase.TestFigure.CurrentPoint; testCase.verifyEqual(cp,[0 0], ... 'Default current point is incorrect') end function defaultCurrentObject(testCase) import matlab.unittest.constraints.IsEmpty co = testCase.TestFigure.CurrentObject; testCase.verifyThat(co,IsEmpty, ... 'Default current object should be empty') end function failingTest(testCase) import matlab.unittest.diagnostics.FigureDiagnostic fig = testCase.TestFigure; ax = axes(fig); surf(ax,peaks) testCase.verifyEmpty(testCase.TestFigure.Children, ... FigureDiagnostic(testCase.TestFigure)) end end end
В командной строке создайте тестовый набор.
suite = testsuite('FigurePropTest');
Создайте тихого исполнителя тестов, который записывает диагностику и генерирует отчет PDF.
import matlab.unittest.plugins.DiagnosticsRecordingPlugin import matlab.unittest.plugins.TestReportPlugin runner = matlab.unittest.TestRunner.withNoPlugins; runner.addPlugin(DiagnosticsRecordingPlugin); runner.addPlugin(TestReportPlugin.producingPDF('MyTestReport.pdf'));
Измените корень артефакта по умолчанию на свою текущую рабочую папку.
runner.ArtifactsRootFolder = pwd;
Запущение тестов. Третьи тестовые сбои.
results = runner.run(suite)
Generating report. Please wait. Preparing content for the report. Adding content to the report. Writing report to file. Report has been saved to: C:\work\MyTestReport.pdf results = 1×3 TestResult array with properties: Name Passed Failed Incomplete Duration Details Totals: 2 Passed, 1 Failed, 0 Incomplete. 1.2295 seconds testing time.
Отобразите тестовые результаты диагностики для третьего теста. Среда тестирования сохраненные два артефакта, связанные с третьим тестом. По умолчанию объект FigureDiagnostic
сохраняет фигуру и как файл PNG и как файл FIG.
results(3).Details.DiagnosticRecord.TestDiagnosticResults
ans = DiagnosticResult with properties: Artifacts: [1×2 matlab.unittest.diagnostics.FileArtifact] DiagnosticText: 'Figure saved to:↵--> C:\work\715b5416-5c52-4a53-bbec-837a5db57392\Figure_284d9501-2121-45a1-bf5c-18904ce11e8f.fig↵--> C:\work\715b5416-5c52-4a53-bbec-837a5db57392\Figure_284d9501-2121-45a1-bf5c-18904ce11e8f.png'
Отобразите сохраненное местоположение первого артефакта.
results(3).Details.DiagnosticRecord.TestDiagnosticResults.Artifacts(1)
ans = FileArtifact with properties: Name: "Figure_284d9501-2121-45a1-bf5c-18904ce11e8f.fig" Location: "C:\work\715b5416-5c52-4a53-bbec-837a5db57392" FullPath: "C:\work\715b5416-5c52-4a53-bbec-837a5db57392\Figure_284d9501-2121-45a1-bf5c-18904ce11e8f.fig"
Чтобы осмотреть изображение, связанное с проваленным тестом, откройте файл в местоположении, показанном в поле FullPath
. Кроме того, поскольку вы сгенерировали протокол испытаний PDF, изображение получено в MyTestReport.pdf
. Протокол испытаний также содержит путь к артефактам.
matlab.unittest.plugins.testreport.DOCXTestReportPlugin
| matlab.unittest.plugins.testreport.HTMLTestReportPlugin
| matlab.unittest.plugins.testreport.PDFTestReportPlugin
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.