matlab.coverage.Result.generateStandaloneReport - Generate standalone report from coverage results - MATLAB (original) (raw)

Main Content

Generate standalone report from coverage results

Since R2024a

Syntax

Description

generateStandaloneReport([results](#mw%5F20549eb0-5f66-4d78-8639-abc0bbaacff7)) generates a standalone code coverage report as a single HTML file from the coverage results. The method saves the report using an autogenerated filename to a temporary folder.

A standalone code coverage report is not interactive and contains hard-coded information. To generate an interactive code coverage report, use the generateHTMLReport method instead.

example

generateStandaloneReport([results](#mw%5F20549eb0-5f66-4d78-8639-abc0bbaacff7),[filename](#mw%5Ff1b367f3-5f11-474d-8b01-02937a294032)) saves the standalone report using the specified filename.

generateStandaloneReport(___,MetricLevel=[level](#mw%5Fabc2ab47-d178-43a9-81d6-47cbcd1af9ba)) specifies the code coverage metrics to include in the standalone report.

filePath = generateStandaloneReport(___) returns the absolute path to the report file. Unlike the previous syntaxes, this syntax does not automatically open the generated report.

example

Input Arguments

expand all

Name of the standalone report file, specified as a string scalar or character vector ending in .html. The value can be a path relative to the current folder or an absolute path.

Example: "myCoverageReport.html"

Example: "C:\work\myCoverageReport.html"

Level of coverage metrics to include in the standalone report, specified as one of the values in this table.

Value of level Types of Coverage Included
"statement" Statement and function coverage
"decision" Statement, function, and decision coverage
"condition" Statement, function, decision, and condition coverage
"mcdc" Statement, function, decision, condition, and modified condition/decision coverage (MC/DC)

By default, the method generates a report including the metrics inresults. When you specify a reporting level using thelevel argument, the method includes the metrics up to and including the specified level. For more information about coverage types, see Types of Code Coverage for MATLAB Source Code.

Data Types: string | char

Examples

expand all

Run a suite of tests and collect the code coverage results. Then, generate a standalone code coverage report as a single HTML file from the coverage results.

Open the example to access the required files and folders. When you open the example, the tests subfolder of your current folder contains tests defined in the BankAccountTest.m and DocPolynomTest.m files. The source subfolder contains the source code required by the tests.

BankAccountTest Class Definition

This code shows the contents of the BankAccountTest class definition file, which uses a shared fixture to access the folder defining the BankAccount class. For more information about the BankAccount class and to view the class code, see Developing Classes That Work Together.

classdef (SharedTestFixtures={ ... matlab.unittest.fixtures.PathFixture( ... fullfile("..","source"))}) ... BankAccountTest < matlab.unittest.TestCase

methods (Test)
    function testConstructor(testCase)
        b = BankAccount(1234,100);
        testCase.verifyEqual(b.AccountNumber,1234, ...
            "Constructor must correctly set account number.")
        testCase.verifyEqual(b.AccountBalance,100, ...
            "Constructor must correctly set account balance.")
    end

    function testConstructorNotEnoughInputs(testCase)
        import matlab.unittest.constraints.Throws
        testCase.verifyThat(@()BankAccount,Throws("MATLAB:minrhs"))
    end

    function testDeposit(testCase)
        b = BankAccount(1234,100);
        b.deposit(25)
        testCase.verifyEqual(b.AccountBalance,125)
    end

    function testWithdraw(testCase)
        b = BankAccount(1234,100);
        b.withdraw(25)
        testCase.verifyEqual(b.AccountBalance,75)
    end

    function testNotifyInsufficientFunds(testCase)
        callbackExecuted = false;
        function testCallback(~,~)
            callbackExecuted = true;
        end

        b = BankAccount(1234,100);
        b.addlistener("InsufficientFunds",@testCallback);

        b.withdraw(50)
        testCase.assertFalse(callbackExecuted, ...
            "The callback should not have executed yet.")
        b.withdraw(60)
        testCase.verifyTrue(callbackExecuted, ...
            "The listener callback should have fired.")
    end
end

end

DocPolynomTest Class Definition

This code shows the contents of the DocPolynomTest class definition file, which uses a shared fixture to access the folder defining the DocPolynom class. For more information about the DocPolynom class and to view the class code, see Representing Polynomials with Classes.

classdef (SharedTestFixtures={ ... matlab.unittest.fixtures.PathFixture( ... fullfile("..","source"))}) ... DocPolynomTest < matlab.unittest.TestCase

properties
    TextToDisplay = "Equation under test: "
end

methods (Test)
    function testConstructor(testCase)
        p = DocPolynom([1 0 1]);
        testCase.verifyClass(p,?DocPolynom)
    end

    function testAddition(testCase)
        p1 = DocPolynom([1 0 1]);
        p2 = DocPolynom([5 2]);
        actual = p1 + p2;
        expected = DocPolynom([1 5 3]);
        diagnostic = [testCase.TextToDisplay ...
            "(x^2 + 1) + (5*x + 2) = x^2 + 5*x + 3"];
        testCase.verifyEqual(actual,expected,diagnostic)
    end

    function testMultiplication(testCase)
        p1 = DocPolynom([1 0 3]);
        p2 = DocPolynom([5 2]);
        actual = p1 * p2;
        expected = DocPolynom([5 2 15 6]);
        diagnostic = [testCase.TextToDisplay ...
            "(x^2 + 3) * (5*x + 2) = 5*x^3 + 2*x^2 + 15*x + 6"];
        testCase.verifyEqual(actual,expected,diagnostic)
    end
end

end

Collect Code Coverage Results

Import the classes used in this example.

import matlab.unittest.plugins.CodeCoveragePlugin import matlab.unittest.plugins.codecoverage.CoverageResult

Create a test suite from the tests folder.

suite = testsuite("tests");

Create a test runner and customize it using a plugin that provides programmatic access to statement, function, and decision coverage metrics for the code in the source folder.

runner = testrunner("textoutput"); format = CoverageResult; plugin = CodeCoveragePlugin.forFolder("source", ... Producing=format,MetricLevel="decision"); runner.addPlugin(plugin)

Run the tests. In this example, all the tests pass.

Setting up PathFixture Done setting up PathFixture: Added 'C:\work\source' to the path.


Running BankAccountTest ..... Done BankAccountTest


Running DocPolynomTest ... Done DocPolynomTest


Tearing down PathFixture Done tearing down PathFixture: Restored the path to its original state.


Because the source folder contains three files, the Result property of format holds the coverage results as a 3-by-1 vector.

results =

3×1 Result array with properties:

Filename
CreationDate

Coverage summary (use generateHTMLReport to generate an HTML report): Function: 9/17 (52.94%) Statement: 32/102 (31.37%) Decision: 11/46 (23.91%)

Use coverageSummary to retrieve information from the coverage results.

Generate Standalone Code Coverage Report

Generate a standalone code coverage report as a single HTML file from the coverage results. The method saves the report using an autogenerated filename to a temporary folder. The report includes tables with detailed information about each source file.

generateStandaloneReport(results)

Generating standalone report. Please wait. Preparing content for the standalone report. Adding content to the standalone report. Writing standalone report to file.

Generate a summarized standalone report by including only the statement and function coverage metrics. Save the report as report.html to your current folder.

filePath = generateStandaloneReport(results, ... "report.html",MetricLevel="statement");

Generating standalone report. Please wait. Preparing content for the standalone report. Adding content to the standalone report. Writing standalone report to file. Standalone code coverage report has been saved to: C:\work\report.html

Open report.html.

Version History

Introduced in R2024a

expand all

If you generate a standalone code coverage report from coverage results that incorporate justified outcomes, then the report includes the justifications. Previously, the report represented the justified outcomes as covered and did not include the justification reason.

See Also

Classes

Topics