Package: matlab.unittest.plugins
Plugin that produces a test result report
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.
Instantiate a TestReportPlugin
using one of its
static methods:
To produce a .docx
report, use
the producingDOCX
static method.
To produce a PDF
report, use the producingPDF
static
method.
Note:
The |
ExcludeLoggedDiagnostics
— Whether to exclude diagnostics from logged eventsfalse
(default) | true
Whether to exclude diagnostics from logged events from the report,
specified as false
or true
(logical
0
or 1). This property is read only. You can specify it as true
during
plugin construction.
IncludeCommandWindowText
— Whether to include text output from the Command Windowfalse
(default) | true
Whether to include the text output from the Command Window in
the report, specified as false
or true
(logical
0
or 1). This property is read only. You can specify it as true
during
plugin construction.
IncludePassingDiagnostics
— Whether to record events from passing eventsfalse
(default) | true
Whether to include diagnostics from passing events in the report,
specified as false
or true
(logical
0
or 1). This property is read only. You can specify it as true
during
plugin construction.
Verbosity
— Verbosity levels recorded by pluginmatlab.unittest.Verbosity.Terse
(default) | array of matlab.unittest.Verbosity
enumeration instancesVerbosity levels recorded by the plugin, specified as an array
of matlab.unittest.Verbosity
enumeration instances.
The plugin records diagnostics that are logged at this level and below.
This property is read only. You can specify it during plugin construction.
Example: [Terse Concise Detailed]
producingDOCX | Constructs plugin that produces .docx report |
producingPDF | Constructs plugin that produces .pdf report |
Handle. To learn how handle classes affect copy operations, see Copying Objects in the MATLAB® documentation.
.docx
FormatCreate 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. The class includes a failing test that,
with parameterization, results in nine failed test results.
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 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)
.pdf
Report That Includes Passing DiagnosticsCreate 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)
matlab.unittest.plugins.testreport.DOCXTestReportPlugin
| matlab.unittest.plugins.testreport.PDFTestReportPlugin