matlab.unittest.plugins.CodeCoveragePlugin.forFolder
Class: matlab.unittest.plugins.CodeCoveragePlugin
Namespace: matlab.unittest.plugins
Create plugin that collects code coverage information for folders
Syntax
Description
plugin = matlab.unittest.plugins.CodeCoveragePlugin.forFolder(
creates a plugin that collects code coverage information for source code in the
specified folder and generates an HTML code coverage report from the information. folder
)
plugin = matlab.unittest.plugins.CodeCoveragePlugin.forFolder(
specifies options using one or more name-value arguments. For example,
folder
,Name,Value
)plugin =
matlab.unittest.plugins.CodeCoveragePlugin.forFolder(pwd,"IncludingSubfolders",true)
creates a plugin that generates an HTML code coverage report for source code in the
current folder and any of its subfolders.
Input Arguments
folder
— Name of folder containing source code
string array | character vector | cell array of character vectors
Name of the folder containing source code, specified as a string array, character vector, or cell array of character vectors. 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: pwd
Example: "myFolder"
Example: ["folderA" "C:\work\folderB"]
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.CodeCoveragePlugin.forFolder(pwd,IncludingSubfolders=true)
Before R2021a, use commas to separate each name and value, and enclose
Name
in quotes.
Example: plugin =
matlab.unittest.plugins.CodeCoveragePlugin.forFolder(pwd,"IncludingSubfolders",true)
IncludingSubfolders
— Option to include source code in subfolders
false
or
0
(default) | true
or 1
Option to include source code in the subfolders of
folder
, specified as a numeric or logical
0
(false
) or
1
(true
). By default, the
plugin reports only on the source code in folder
and ignores source code defined in its subfolders.
Producing
— Format for accessing code coverage information
matlab.unittest.plugins.codecoverage.CoverageReport
object (default) | row vector of matlab.unittest.plugins.codecoverage.CoverageFormat
objects
Format for accessing the code coverage
information, specified as a row vector of matlab.unittest.plugins.codecoverage.CoverageFormat
objects. If you specify
multiple CoverageFormat
objects, the plugin provides access to the
information in each corresponding coverage format.
The plugin supports these CoverageFormat
subclasses:
Example: Producing=matlab.unittest.plugins.codecoverage.CoberturaFormat("report.xml")
MetricLevel
— Level of coverage metrics to collect
"statement"
(default) | "decision"
| "condition"
| "mcdc"
Level of coverage metrics to collect, specified as one of the values in this table. By default, the plugin collects statement and function coverage metrics.
Value of MetricLevel | Types of Coverage Included |
---|---|
"statement" | Statement and function coverage |
| Statement, function, and decision coverage |
| Statement, function, decision, and condition coverage |
| Statement, function, decision, condition, and modified condition/decision coverage (MC/DC) |
For more information about coverage types, see Types of Code Coverage for MATLAB Source Code (MATLAB Test).
Filter
— Location of coverage filters to apply
string array | character vector | cell array of character vectors
Since R2024b
Location of the coverage filters to apply, specified as a string array, character vector, or cell array of character vectors. If you have a MATLAB Test license, you can use this argument to specify a MAT file that contains the coverage filters previously created for the source code under test. The value can be a path relative to the current folder or an absolute path.
For example, suppose that you previously justified the missing
coverage for your source code and saved the justifications to a file
named myFilters.mat
in your current folder. Using the
existing matlabtest.coverage.Justification
objects in
myFilters.mat
, run your tests and produce an
interactive HTML code coverage report that filters the blocks of code
that are missed by the tests.
import matlab.unittest.plugins.CodeCoveragePlugin import matlab.unittest.plugins.codecoverage.CoverageReport runner = testrunner("textoutput"); format = CoverageReport("report"); plugin = CodeCoveragePlugin.forFolder("myFolder", ... Producing=format,MetricLevel="mcdc",Filter="myFilters.mat"); runner.addPlugin(plugin) suite = testsuite("MyTestClass"); results = runner.run(suite);
Note
If you are using a MATLAB project to organize your work, then you do not need to
specify the Filter
argument. The testing
framework automatically applies the coverage filters stored in the
project.
Example: Filter="myFilters.mat"
Example: Filter="C:\work\myFilters.mat"
Examples
Generate Interactive Code Coverage Report
Run a suite of tests and generate an interactive 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 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 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 interactive code coverage report for the code in sourceFolder
. Specify that the plugin writes 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"); reportFormat = CoverageReport("coverageReport"); p = CodeCoveragePlugin.forFolder("sourceFolder","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 interactive 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 __________ MATLAB 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 R2014bR2024b: Reuse existing coverage filters
If you have a MATLAB
Test license, you can specify the Filter
name-value argument
to apply the coverage filters previously created for the source code under test.
R2023a: Programmatically access code coverage results
To programmatically access the results of code coverage analysis for your source code, create
a CodeCoveragePlugin
instance using a CoverageResult
object.
R2023a: Specify the coverage metrics to collect
To specify the coverage metrics to collect, use the MetricLevel
name-value argument.
See Also
Functions
matlab.unittest.plugins.CodeCoveragePlugin.forFile
|matlab.unittest.plugins.CodeCoveragePlugin.forNamespace
Classes
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)