Main Content

matlab.unittest.plugins.codecoverage.CoverageReport class

Package: matlab.unittest.plugins.codecoverage

HTML format for code coverage report

Description

The matlab.unittest.plugins.codecoverage.CoverageReport class provides a way to generate code coverage reports in HTML format. To generate a code coverage report in this format, create a CodeCoveragePlugin instance using a CoverageReport object, and then add the plugin to the test runner.

Creation

Description

reportFormat = matlab.unittest.plugins.codecoverage.CoverageReport creates a CoverageReport object that instructs CodeCoveragePlugin to generate a report in HTML format and save it to a temporary folder. By default, the main file of the report is index.html.

example

reportFormat = matlab.unittest.plugins.codecoverage.CoverageReport(folderName) specifies the name of the code coverage report folder.

reportFormat = matlab.unittest.plugins.codecoverage.CoverageReport(___,"MainFile",fileName) sets the MainFile property to the specified name. You can specify the file name as the last argument in any of the previous syntaxes. For example, reportFormat = matlab.unittest.plugins.codecoverage.CoverageReport("MainFile","main.html") returns a CoverageReport object with its MainFile property set to 'main.html'.

Input Arguments

expand all

Name of the code coverage report folder, specified as a string scalar or character vector. The folderName argument can include a relative path, but the relative path must be in the current folder. Otherwise, folderName must include a full path. If the folder does not exist, CoverageReport creates it.

Example: "myCoverageReport"

Example: "C:\work\myCoverageReport"

Properties

expand all

Name of the main HTML file, returned as a character vector ending in .html or .htm. If not set, the main file of the report is index.html.

You can specify the value of this property during construction as a string scalar or character vector.

Example: 'main.html'

Attributes:

GetAccess
public
SetAccess
immutable

Examples

collapse all

Run a suite of tests and generate a code coverage report in HTML format for your source code.

In a folder named sourceFolder in your current folder, create the quadraticSolver function. The function takes as inputs the coefficients of a quadratic polynomial and returns the roots of that polynomial. If the coefficients are specified as nonnumeric values, the function throws an error.

function roots = quadraticSolver(a,b,c)
% quadraticSolver returns solutions to the
% quadratic equation a*x^2 + b*x + c = 0.

if ~isa(a,"numeric") || ~isa(b,"numeric") || ~isa(c,"numeric")
    error("quadraticSolver:InputMustBeNumeric", ...
        "Coefficients must be numeric.")
end

roots(1) = (-b + sqrt(b^2 - 4*a*c)) / (2*a);
roots(2) = (-b - sqrt(b^2 - 4*a*c)) / (2*a);

end

To test the quadraticSolver function, create the SolverTest class in a folder named testsFolder in your current folder. Define three Test methods that test the function against real solutions, imaginary solutions, and nonnumeric inputs.

classdef SolverTest < matlab.unittest.TestCase
    methods(Test)
        function realSolution(testCase)
            actSolution = quadraticSolver(1,-3,2);
            expSolution = [2 1];
            testCase.verifyEqual(actSolution,expSolution)
        end
        function imaginarySolution(testCase)
            actSolution = quadraticSolver(1,2,10);
            expSolution = [-1+3i -1-3i];
            testCase.verifyEqual(actSolution,expSolution)
        end
        function nonnumericInput(testCase)
            testCase.verifyError(@()quadraticSolver(1,"-3",2), ...
                "quadraticSolver:InputMustBeNumeric")
        end
    end
end

To run the tests and generate a code coverage report, first add sourceFolder to the path.

addpath("sourceFolder")

Create a test suite from testsFolder.

suite = testsuite("testsFolder");

Create a test runner and customize it using a plugin that generates an HTML code coverage report for the code in sourceFolder. Instruct the plugin to write its output to a folder named coverageReport in your current folder.

import matlab.unittest.plugins.CodeCoveragePlugin
import matlab.unittest.plugins.codecoverage.CoverageReport
runner = testrunner("textoutput");
sourceCodeFolder = "sourceFolder";
reportFolder = "coverageReport";
reportFormat = CoverageReport(reportFolder);
p = CodeCoveragePlugin.forFolder(sourceCodeFolder,"Producing",reportFormat);
runner.addPlugin(p)

Run the tests. In this example, all the tests pass and the source code receives full coverage. The plugin generates an HTML code coverage report in the specified folder coverageReport, created in your current folder. By default, the main file of the report is index.html.

results = runner.run(suite);
Running SolverTest
...
Done SolverTest
__________

Code coverage report has been saved to:
 C:\work\coverageReport\index.html

Open the main file of the report.

open(fullfile("coverageReport","index.html"))

Version History

Introduced in R2019a

expand all