主要内容

matlab.unittest.plugins.codecoverage.CoverageReport 类

命名空间: matlab.unittest.plugins.codecoverage
超类: matlab.unittest.plugins.codecoverage.CoverageFormat

交互式 HTML 代码覆盖率报告的格式

描述

matlab.unittest.plugins.codecoverage.CoverageReport 类提供一种生成 HTML 格式的交互式代码覆盖率报告的方式。要生成这种格式的代码覆盖率报告,请使用 CoverageReport 对象创建一个 CodeCoveragePlugin 实例,然后将插件添加到测试运行器中。

交互式代码覆盖率报告允许您通过选择报告中的选项来自定义显示的信息。例如,您可以从包含的覆盖率度量列表中进行选择,或者控制覆盖的或未覆盖的可执行文件的高亮显示。

创建对象

描述

format = matlab.unittest.plugins.codecoverage.CoverageReport 创建一个 CoverageReport 对象,该对象指示 CodeCoveragePlugin 生成 HTML 格式的交互式报告,并将其保存到临时文件夹中。默认情况下,报告的主文件是 index.html

format = matlab.unittest.plugins.codecoverage.CoverageReport(folderName) 指定代码覆盖率报告文件夹的名称。

示例

format = matlab.unittest.plugins.codecoverage.CoverageReport(___,Name,Value) 支持上述语法中的任何输入参量组合,且可使用一个或多个名称-值参量指定选项。例如,format = matlab.unittest.plugins.codecoverage.CoverageReport("MainFile","main.html") 创建一个 CoverageReport 对象,用于生成代码覆盖率报告,其主文件是 main.html

输入参量

全部展开

代码覆盖率报告文件夹的名称,指定为字符串标量或字符向量。该值可以是相对路径,但相对路径必须在当前文件夹中。否则,该值必须为完整路径。如果该文件夹不存在,CoverageReport 会创建它。

示例: "myCoverageReport"

示例: "C:\work\myCoverageReport"

名称-值参数

全部展开

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

示例: format = matlab.unittest.plugins.codecoverage.CoverageReport(MainFile="main.html")

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

示例: format = matlab.unittest.plugins.codecoverage.CoverageReport("MainFile","main.html")

主 HTML 文件的名称,指定为以 .html.htm 结尾的字符串标量或字符向量。如果不指定名称,插件将报告的主文件命名为 index.html

此参量设置 MainFile 属性。

示例: MainFile="main.html"

自 R2024a 起

HTML 文档的标题,指定为字符串标量或字符向量。当代码覆盖率报告在浏览器中打开时,指定的标题出现在标签页中。

示例: DocumentTitle="My Coverage Report"

属性

全部展开

主 HTML 文件的名称,返回为以 .html.htm 结尾的字符向量。默认情况下,报告的主文件是 index.html

此属性由 MainFile 名称-值参量设置。

示例: 'main.html'

属性:

GetAccess
public
SetAccess
immutable

示例

全部折叠

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

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

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

要测试 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 中的代码生成交互式代码覆盖率报告。指定插件将其输出写入当前文件夹中名为 coverageReport 的文件夹中。

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)

运行测试。在此示例中,所有测试都通过,源代码实现了完全覆盖。该插件在您当前文件夹中创建的指定文件夹 coverageReport 中生成一个交互式代码覆盖率报告。默认情况下,报告的主文件是 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"))

版本历史记录

在 R2019a 中推出

全部展开