matlab.unittest.plugins.TestReportPlugin class
Package: matlab.unittest.plugins
Plugin that produces a test result report
Description
TestReportPlugin
creates a plugin that directs the
TestRunner
to produce a test result report. Using this plugin, you
can produce readable and archivable test reports.
Construction
Instantiate a TestReportPlugin
using one of its static methods:
To produce a
.docx
report, use theproducingDOCX
static method.To produce a
.html
report, use theproducingHTML
static method.To produce a
PDF
report, use theproducingPDF
static method.
Properties
IncludeCommandWindowText
— Indicator if text output from Command Window is included
false
(default) | true
This property is read-only.
Indicator if text output from Command Window is included, specified as
false
or true
(logical
0 or 1). By default, IncludeCommandWindowText
is
false
and the text output from the Command Window is excluded
from the report. To include Command Window text in the report, specify
IncludeCommandWindowText
as true
during
plugin construction.
IncludePassingDiagnostics
— Indicator if diagnostics for passing events are included
false
(default) | true
This property is read-only.
Indicator if diagnostics for passing events are included, specified as
false
or true
(logical
0 or
1). By default, IncludePassingDiagnostics
is false
and the diagnostics from passing events are excluded from the output. To include
diagnostics from passing events in the output, specify
IncludePassingDiagnostics
as true
during
plugin construction.
LoggingLevel
— Maximum verbosity level for logged diagnostics included by the plugin
matlab.automation.Verbosity.Terse
(default) | matlab.automation.Verbosity
enumeration object
This property is read-only.
Maximum verbosity level for logged diagnostics included by the plugin, returned as a
matlab.automation.Verbosity
enumeration object. The plugin includes
diagnostics that are logged at this level and below. By default this property value is
matlab.automation.Verbosity.Terse
. You can specify a different
logging level during plugin construction.
Logged diagnostics are diagnostics that you supply to the
testing framework with a call to the log (TestCase)
or log
(Fixture)
method.
Methods
producingDOCX | Constructs plugin that produces .docx report |
producingHTML | Constructs plugin that produces .html report |
producingPDF | Constructs plugin that produces .pdf report |
Copy Semantics
Handle. To learn how handle classes affect copy operations, see Copying Objects.
Examples
Generate Test Result Report in .docx
Format
Create a test suite from two test files, run
the suite, and generate a .docx
report of the results.
Create a new file in your working folder named ScriptBasedTest.m
containing
the following test script. The script includes two failing and incomplete
tests.
%% 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'))
Create a file named ClassBasedTest.m
containing the
following test class.
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
At the command prompt, create a test suite from both test files.
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.
Create a silent test runner, so that there is no information
output to the command window. Create a TestReportPlugin
that
sends output to the file MyTestReport.docx
.
runner = TestRunner.withNoPlugins;
docxFile = 'MyTestReport.docx';
plugin = TestReportPlugin.producingDOCX(docxFile);
Add the plugin to the TestRunner
and
run the suite.
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 the test report.
open(docxFile)
Generate .pdf
Report That Includes Passing Diagnostics
Create a test suite from a function-based test, run the suite, and generate a report of the results. Include passing diagnostics and the text output to the Command Window.
Create a new file in your working folder named FunctionBasedTest.m
containing
the following function-based test. The test file includes two failing
tests.
%% 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
At the command prompt, create a test suite from FunctionBasedTest.m
.
Create a test runner that displays output to the command window using
the default plugin.
import matlab.unittest.TestRunner; import matlab.unittest.TestSuite; import matlab.unittest.plugins.TestReportPlugin; suite = testsuite('FunctionBasedTest'); runner = TestRunner.withTextOutput;
Create a TestReportPlugin
that sends output
to the file MyTestReport2.pdf
. Include passing
diagnostics and text output from the Command Window in the report.
pdfFile = 'MyTestReport2.pdf'; plugin = TestReportPlugin.producingPDF(pdfFile,... 'IncludingPassingDiagnostics',true,'IncludingCommandWindowText',true);
Add the plugin to the TestRunner
and
run the suite.
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 the test report.
open(pdfFile)
Create Test Report That Includes Artifacts
In a file in your current working folder, create the FigurePropTest
test
class. If the failingTest
test method fails (it
always does in this example), it uses a FigureDiagnostic
to
save the figure so you can examine it later.
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
At the command prompt, create a test suite.
suite = testsuite('FigurePropTest');
Create a silent test runner that records diagnostics and generates a PDF report.
import matlab.unittest.plugins.DiagnosticsRecordingPlugin import matlab.unittest.plugins.TestReportPlugin runner = matlab.unittest.TestRunner.withNoPlugins; runner.addPlugin(DiagnosticsRecordingPlugin) runner.addPlugin(TestReportPlugin.producingPDF('MyTestReport.pdf'))
Change the default artifact root to your current working folder.
runner.ArtifactsRootFolder = pwd;
Run the tests. The third test fails.
results = runner.run(suite)
Generating test report. Please wait. Preparing content for the test report. Adding content to the test report. Writing test report to file. Test report has been saved to: C:\wok\MyTestReport.pdf results = 1×3 TestResult array with properties: Name Passed Failed Incomplete Duration Details Totals: 2 Passed, 1 Failed (rerun), 0 Incomplete. 8.3355 seconds testing time.
Display the test diagnostic results for the third test. The testing framework saved
two artifacts related to the third test. By default, a FigureDiagnostic
object saves a figure as both a PNG file and a FIG file.
results(3).Details.DiagnosticRecord.TestDiagnosticResults
ans = DiagnosticResult with properties: Artifacts: [1×2 matlab.automation.diagnostics.FileArtifact] DiagnosticText: 'Figure saved to:↵--> C:\work\530aa31c-86c7-4712-a064-d9f00ce041fb\Figure_dfd8c611-8387-4579-804f-6384642ba4ff.fig↵--> C:\work\530aa31c-86c7-4712-a064-d9f00ce041fb\Figure_dfd8c611-8387-4579-804f-6384642ba4ff.png'
Display the stored location of the first artifact.
results(3).Details.DiagnosticRecord.TestDiagnosticResults.Artifacts(1)
ans = FileArtifact with properties: Name: "Figure_dfd8c611-8387-4579-804f-6384642ba4ff.fig" Location: "C:\work\530aa31c-86c7-4712-a064-d9f00ce041fb" FullPath: "C:\work\530aa31c-86c7-4712-a064-d9f00ce041fb\Figure_dfd8c611-8387-4579-804f-6384642ba4ff.fig"
To inspect the image related to the failed test, open the file
at the location shown in the FullPath
field. Additionally,
since you generated a PDF test report, the image is captured in MyTestReport.pdf
.
The test report also contains the path to the artifacts.
Version History
Introduced in R2016bR2020a: Generate test reports including test tags
Test reports generated using the TestReportPlugin
class display the
test tags for tagged test suite elements. You can generate tagged test reports in
DOCX, HTML, and PDF formats.
MATLAB-Befehl
Sie haben auf einen Link geklickt, der diesem MATLAB-Befehl entspricht:
Führen Sie den Befehl durch Eingabe in das MATLAB-Befehlsfenster aus. Webbrowser unterstützen keine MATLAB-Befehle.
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)