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 the producingDOCX static method.

  • To produce a PDF report, use the producingPDF static method.

    Note:   The producingPDF static method uses Microsoft® Word to create PDF files. Therefore, this method is only supported on Windows® platforms with Microsoft Word 2007 or a later. This restriction does not apply to reports generated with the producingDOCX method.

Properties

expand all

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.

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.

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 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]

Methods

producingDOCXConstructs plugin that produces .docx report
producingPDFConstructs plugin that produces .pdf report

Copy Semantics

Handle. To learn how handle classes affect copy operations, see Copying Objects in the MATLAB® documentation.

Examples

expand all

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. 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)

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)

Introduced in R2016b

Was this topic helpful?