Main Content

matlab.unittest.plugins.TestReportPlugin.producingHTML

Class: matlab.unittest.plugins.TestReportPlugin
Package: matlab.unittest.plugins

Create plugin that generates HTML test report

Description

plugin = matlab.unittest.plugins.TestReportPlugin.producingHTML creates a plugin that generates an HTML report of test results in a temporary folder. Within that folder, the main file of the report is index.html. If you rerun the test suite with this plugin, then MATLAB® overwrites the contents in the folder.

This syntax is equivalent to plugin = matlab.unittest.plugins.TestReportPlugin.producingHTML(tempname).

example

plugin = matlab.unittest.plugins.TestReportPlugin.producingHTML(folderName) saves the report to the specified folder.

plugin = matlab.unittest.plugins.TestReportPlugin.producingHTML(___,Name,Value) specifies options using one or more name-value arguments in addition to any of the input argument combinations in previous syntaxes. For example, plugin = matlab.unittest.plugins.TestReportPlugin.producingHTML("MainFile","main.html") creates a plugin that generates a test report with its main file named main.html instead of index.html.

Input Arguments

expand all

Name of the test report folder, specified as a string scalar or character vector. If you specify a relative path, the path must be in the current folder. Otherwise, you must specify a full path.

Example: "myTestReport"

Example: "C:\work\myTestReport"

Name-Value Arguments

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Example: plugin = matlab.unittest.plugins.TestReportPlugin.producingHTML(MainFile="main.html")

Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

Example: plugin = matlab.unittest.plugins.TestReportPlugin.producingHTML("MainFile","main.html")

Name of the main HTML file, specified as a string scalar or character vector ending in .html or .htm. If not specified, the plugin names the main file of the report index.html.

Example: MainFile="main.html"

Title of the test report, specified as a string scalar or character vector. By default, the plugin uses "MATLAB Test Report" as the title.

Example: Title="My Test Report"

Whether to include the text output from the Command Window, specified as a numeric or logical 0 (false) or 1 (true). By default, the plugin does not include the text output from the Command Window in the test report.

Whether to include the diagnostics for passing events, specified as a numeric or logical 0 (false) or 1 (true). By default, the plugin does not include the diagnostics for passing events in the test report.

Maximum verbosity level of logged diagnostics to include in the test report, specified as an integer scalar from 0 through 4, a matlab.automation.Verbosity enumeration object, or a text representation of the enumeration. The plugin includes diagnostics logged at the specified level and below.

Numeric RepresentationEnumeration Member NameVerbosity Description
0None

No information

1Terse

Minimal information

2Concise

Moderate amount of information

3Detailed

Some supplemental information

4Verbose

Lots of supplemental information

By default, the plugin includes diagnostics logged at the matlab.automation.Verbosity.Terse level (level 1). To exclude logged diagnostics, specify LoggingLevel as matlab.automation.Verbosity.None (level 0).

Logged diagnostics are diagnostics that you supply to the testing framework with the log (TestCase) and log (Fixture) methods.

Example: "LoggingLevel","detailed"

Examples

expand all

Create a test suite from two test files, run the suite, and generate an HTML 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 tests.

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 generates a .html test report in a folder named myResults.

runner = TestRunner.withNoPlugins;
htmlFolder = 'myResults';
plugin = TestReportPlugin.producingHTML(htmlFolder);

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\myResults\index.html

result = 

  1×284 TestResult array with properties:

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

Totals:
   282 Passed, 2 Failed, 2 Incomplete.
   1.6712 seconds testing time.

Open the test report by clicking the name of the saved file. In this example the file name is C:\work\myResults\index.html.

Version History

Introduced in R2017b

expand all