Main Content

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

matlab.unittest.plugins.codecoverage.CoberturaFormat 类

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

Cobertura XML 代码覆盖率报告的格式

描述

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

创建对象

描述

示例

format = matlab.unittest.plugins.codecoverage.CoberturaFormat(filename) 创建一个 CoberturaFormat 对象,该对象指示 CodeCoveragePlugin 生成 Cobertura XML 格式的报告,并使用指定的文件名保存它。

输入参量

全部展开

代码覆盖率报告文件的名称,指定为以 .xml 结尾的字符串标量或字符向量。该值可以是相对路径,但相对路径必须在当前文件夹中。否则,该值必须为完整路径。

示例: "myCoverageReport.xml"

示例: "C:\work\myCoverageReport.xml"

示例

全部折叠

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

在当前文件夹的一个文件中创建 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 函数,请在当前文件夹中创建 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

根据 SolverTest 类创建一个测试套件。

suite = testsuite("SolverTest");

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

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)

运行测试。在此示例中,所有测试都通过,源代码实现了完全覆盖。该插件在您的当前文件夹中生成一个 Cobertura XML 代码覆盖率报告。

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

您可以在持续集成 (CI) 平台上处理生成的代码覆盖率报告。您还可以使用 open(reportFile)disp(fileread(reportFile)) 等命令查看其内容。

版本历史记录

在 R2017b 中推出

全部展开