Main Content

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

matlab.unittest.plugins.codecoverage.CoverageReport 类

命名空间: matlab.unittest.plugins.codecoverage

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(___,"MainFile",filename)MainFile 属性设置为指定名称。您可以将文件名指定为上述任一语法中的最后一个参数。例如,format = matlab.unittest.plugins.codecoverage.CoverageReport("MainFile","main.html") 创建一个 CoverageReport 对象,其 MainFile 属性设置为 'main.html'

输入参数

全部展开

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

示例: "myCoverageReport"

示例: "C:\work\myCoverageReport"

属性

全部展开

主 HTML 文件的名称,返回为以 .html.htm 结尾的字符向量。如果未设置,则报告的主文件为 index.html

示例: 'main.html'

属性:

GetAccess
public
SetAccess
immutable

示例

全部折叠

运行一套测试,并为您的源代码生成 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"))

版本历史记录

在 R2019a 中推出

全部展开