matlab.unittest.plugins.TestReportPlugin.producingHTML

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

Constructs plugin that produces .html report

Syntax

matlab.unittest.plugins.TestReportPlugin.producingHTML
matlab.unittest.plugins.TestReportPlugin.producingHTML(htmlFolder)
matlab.unittest.plugins.TestReportPlugin.producingHTML(___,Name,Value)

Description

matlab.unittest.plugins.TestReportPlugin.producingHTML constructs a plugin that produces 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 matlab.unittest.plugins.TestReportPlugin.producingHTML(tempname).

example

matlab.unittest.plugins.TestReportPlugin.producingHTML(htmlFolder) saves the report to the htmlFolder folder.

matlab.unittest.plugins.TestReportPlugin.producingHTML(___,Name,Value) constructs a plugin with additional options specified by one or more Name,Value pair arguments. You can use this syntax with any of the arguments from the previous syntaxes.

Input Arguments

expand all

Output folder, specified as a character vector or string scalar. htmlFolder can be a relative or absolute path. By default, within the folder, the main file of the report is index.html. To change the name of the main file, use the 'MainFile' name-value pair argument.

Example: 'TestRunOutput'

Example: 'C:\myWork\testResults'

Name-Value Pair Arguments

Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name must appear inside single quotes (' '). You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

Example: TestReportPlugin.producingHTML('myTestOutput','MainFile','main.html') creates a plugin that outputs results to the myTestOutput folder, with a main file named main.html instead of index.html.

expand all

Main HTML file name, specified as a character vector or string scalar.

Example: 'main.html'

Exclude logged event diagnostics, specified as false or true. By default, ExcludingLoggedDiagnostics is false and logged diagnostics are included in the report. To exclude logged diagnostics, specify ExcludingLoggedDiagnostics as true.

Data Types: logical

Include Command Window text in report, specified as false or true. By default, IncludingCommandWindowText is false and the text output from the Command Window is excluded from the report. To include Command Window text in the report, specify IncludingCommandWindowText as true.

Data Types: logical

Include passing event diagnostics, specified as false or true. By default, IncludingPassingDiagnostics is false and the diagnostics from passing events are excluded from the report. To include diagnostics from passing events in the report, specify IncludingPassingDiagnostics as true.

Data Types: logical

Verbosity levels used by the plugin instance, specified as an integer value from 1 through 4, or as a matlab.unittest.Verbosity enumeration object. The plugin records diagnostics that are logged at this level and below. Integer values correspond to the members of the matlab.unittest.Verbosity enumeration. By default the plugin records diagnostics logged at the matlab.unittest.Verbosity.Terse level.

Numeric RepresentationCorresponding Enumeration ObjectVerbosity Description
1matlab.unittest.Verbosity.Terse

Minimal information

2matlab.unittest.Verbosity.Concise

Moderate amount of information

3matlab.unittest.Verbosity.Detailed

Some supplemental information

4matlab.unittest.Verbosity.Verbose

More supplemental information

Examples

expand all

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

Introduced in R2017b

Was this topic helpful?