matlab.unittest.plugins.TestReportPlugin 类
包: matlab.unittest.plugins
生成测试结果报告的插件
描述
TestReportPlugin
创建一个插件,它指示 TestRunner
生成测试结果报告。使用此插件,您可以生成可读且可存档的测试报告。
构造
使用以下静态方法之一实例化 TestReportPlugin
:
要生成
.docx
报告,请使用producingDOCX
静态方法。要生成
.html
报告,请使用producingHTML
静态方法。要生成
PDF
报告,请使用producingPDF
静态方法。
属性
IncludeCommandWindowText
— 表明是否包含命令行窗口的文本输出的指示符
false
(默认) | true
此 属性 为只读。
表明是否包含命令行窗口的文本输出的指示符,指定为 false
或 true
(logical
0 或 1)。默认情况下,IncludeCommandWindowText
为 false
,即不在报告中包含命令行窗口的文本输出。要在报告中包含命令行窗口文本,请在构建插件时将 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
。您可以在插件构造期间指定不同的日志记录级别。
记录的诊断信息是您通过调用 log (TestCase)
或 log (Fixture)
方法提供给测试框架的诊断信息。
方法
producingDOCX | 构造生成 .docx 报告的插件 |
producingHTML | 构造生成 .html 报告的插件 |
producingPDF | 构造生成 .pdf 报告的插件 |
复制语义
句柄。要了解句柄类如何影响复制操作,请参阅复制对象。
示例
以 .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.
创建一个静默测试运行程序,从而不在命令行窗口输出任何信息。创建一个将输出发送到文件 MyTestReport.docx
的 TestReportPlugin
。
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;
创建一个将输出发送到文件 MyTestReport2.pdf
的 TestReportPlugin
。在报告中包含通过诊断信息和命令行窗口的文本输出。
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
中也会包含捕获的图像。测试报告还包含项目路径。
版本历史记录
在 R2016b 中推出R2020a: 生成包括测试标记的测试报告
使用 TestReportPlugin
类生成的测试报告显示带标记的测试套件元素的测试标记。您可以生成 DOCX、HTML 和 PDF 格式的带标记的测试报告。
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)