Main Content

matlab.unittest.plugins.codecoverage.CoberturaFormat Class

Namespace: matlab.unittest.plugins.codecoverage
Superclasses: matlab.unittest.plugins.codecoverage.CoverageFormat

Format for Cobertura XML code coverage report

Description

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

Creation

Description

format = matlab.unittest.plugins.codecoverage.CoberturaFormat(filename) creates a CoberturaFormat object that instructs CodeCoveragePlugin to generate a report in Cobertura XML format and save it using the specified filename.

example

Input Arguments

expand all

Name of the code coverage report file, specified as a string scalar or character vector ending in .xml. The value can be a relative path, but the relative path must be in the current folder. Otherwise, the value must be a full path.

Example: "myCoverageReport.xml"

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

Examples

collapse all

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

In a file 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 r = 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

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

end

To test the quadraticSolver function, create the SolverTest class 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

Create a test suite from the SolverTest class.

suite = testsuite("SolverTest");

Create a test runner and customize it using a plugin that generates a Cobertura XML code coverage report for the source code in the file quadraticSolver.m. Specify that the plugin writes its output to a file named coverageReport.xml in your current folder.

import matlab.unittest.plugins.CodeCoveragePlugin
import matlab.unittest.plugins.codecoverage.CoberturaFormat
runner = testrunner("textoutput");
sourceCodeFile = "quadraticSolver.m";
reportFile = "coverageReport.xml";
reportFormat = CoberturaFormat(reportFile);
p = CodeCoveragePlugin.forFile(sourceCodeFile,"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 a Cobertura XML code coverage report in your current folder.

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

You can process the generated code coverage report on continuous integration (CI) platforms. You also can view its contents with commands such as open(reportFile) or disp(fileread(reportFile)).

Version History

Introduced in R2017b

expand all