Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

matlab.unittest.plugins.CodeCoveragePlugin.forFolder

类: matlab.unittest.plugins.CodeCoveragePlugin
命名空间: matlab.unittest.plugins

创建用于为文件夹收集代码覆盖率信息的插件

说明

plugin = matlab.unittest.plugins.CodeCoveragePlugin.forFolder(folderName) 创建一个插件,用于收集指定文件夹中源代码的代码覆盖率信息并根据这些信息生成 HTML 代码覆盖率报告。

示例

plugin = matlab.unittest.plugins.CodeCoveragePlugin.forFolder(folderName,Name,Value) 使用一个或多个名称-值参数指定选项。例如,plugin = matlab.unittest.plugins.CodeCoveragePlugin.forFolder(pwd,"IncludingSubfolders",true) 创建一个插件,该插件为当前文件夹及其任何子文件夹中的源代码生成一个 HTML 代码覆盖率报告。

输入参数

全部展开

包含源代码的文件夹的名称,指定为字符串数组、字符向量或字符向量元胞数组。该值可以是相对路径,但相对路径必须在当前文件夹中。否则,该值必须为完整路径。如果您指定多个文件夹,插件将分别报告每个文件夹的相关信息。

示例: pwd

示例: "myFolder"

示例: ["folderA" "C:\work\folderB"]

名称-值参数

将可选的参数对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参数名称,Value 是对应的值。名称-值参数必须出现在其他参数之后,但参数对组的顺序无关紧要。

示例: plugin = matlab.unittest.plugins.CodeCoveragePlugin.forFolder(pwd,IncludingSubfolders=true)

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: plugin = matlab.unittest.plugins.CodeCoveragePlugin.forFolder(pwd,"IncludingSubfolders",true)

是否包括 folderName 的子文件夹中的源代码,指定为数值或逻辑值 0 (false) 或 1 (true)。默认情况下,插件只对 folderName 中的源代码生成报告,而忽略在其子文件夹中定义的源代码。

用于访问代码覆盖率信息的格式,指定为 CoverageReport 对象、CoberturaFormat 对象、CoverageResult 对象或由这些格式对象组成的行向量。如果指定多个格式对象,插件支持访问每种格式信息。

示例: Producing=matlab.unittest.plugins.codecoverage.CoberturaFormat("report.xml")

要收集的覆盖率度量的最高级别,指定为下表中的值之一。默认情况下,插件会收集语句和函数覆盖率度量。

MetricLevel 的值包括的覆盖率类型
"statement"语句和函数覆盖率

"decision"(需要 MATLAB® Test™

语句、函数和决策覆盖率

"condition"(需要 MATLAB Test

语句、函数、决策和条件覆盖率

"mcdc"(需要 MATLAB Test

语句、函数、决策、条件和修正条件/决策覆盖率 (MC/DC)

有关覆盖率类型的详细信息,请参阅Types of Code Coverage for MATLAB Source Code (MATLAB Test)

属性

statictrue

要了解方法的属性,请参阅方法属性

示例

全部展开

运行一套测试,并为您的源代码生成 HTML 格式的代码覆盖率报告。

在当前文件夹内名为 sourceFolder 的文件夹中,创建 quadraticSolver 函数。该函数接受二次多项式的系数作为输入,并返回该多项式的根。如果系数指定为非数值,该函数将引发错误。

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

要测试 quadraticSolver 函数,请在当前文件夹内名为 testsFolder 的文件夹中创建 SolverTest 类。针对实数解、虚数解和非数值输入定义三个 Test 方法来测试该函数。

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

要运行测试并生成代码覆盖率报告,请首先将 sourceFolder 添加到路径中。

addpath("sourceFolder")

testsFolder 创建一个测试套件。

suite = testsuite("testsFolder");

创建一个测试运行器,并使用插件对其进行自定义,该插件为 sourceFolder 中的代码生成 HTML 代码覆盖率报告。指定插件将其输出写入当前文件夹中名为 coverageReport 的文件夹中。

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)

运行测试。在此示例中,所有测试都通过,源代码实现了完全覆盖。该插件在您当前文件夹中创建的指定文件夹 coverageReport 中生成一个 HTML 代码覆盖率报告。默认情况下,报告的主文件是 index.html

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

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

打开报告的主文件。

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

版本历史记录

在 R2014b 中推出

全部展开