matlab.unittest.plugins.codecoverage.CoberturaFormat 类
命名空间: matlab.unittest.plugins.codecoverage
Cobertura XML 代码覆盖率报告的格式
描述
matlab.unittest.plugins.codecoverage.CoberturaFormat
类提供一种生成 Cobertura XML 格式的代码覆盖率报告的方式。要生成这种格式的代码覆盖率报告,请使用 CoberturaFormat
对象创建一个 CodeCoveragePlugin
实例,然后将插件添加到测试运行器中。
创建对象
描述
输入参量
filename
— 代码覆盖率报告文件的名称
字符串标量 | 字符向量
代码覆盖率报告文件的名称,指定为以 .xml
结尾的字符串标量或字符向量。该值可以是相对路径,但相对路径必须在当前文件夹中。否则,该值必须为完整路径。
示例: "myCoverageReport.xml"
示例: "C:\work\myCoverageReport.xml"
示例
生成 Cobertura XML 格式的代码覆盖率报告
运行一套测试,并为您的源代码生成 Cobertura XML 格式的代码覆盖率报告。
在当前文件夹的一个文件中创建 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
函数,请在当前文件夹中创建 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 中推出R2023b: 收集 Cobertura XML 格式的决策覆盖率结果
如果您有 MATLAB® Test™ 许可证,则除了行覆盖率之外,您还可以收集有关决策(分支)覆盖率的信息。要收集决策覆盖率信息,请在使用 CodeCoveragePlugin
类的静态方法之一创建插件时指定 MetricLevel
名称-值参量。例如,运行您的测试并生成 Cobertura XML 格式的代码覆盖率结果,该结果包括文件夹中源代码的行覆盖率和决策覆盖率度量。
import matlab.unittest.plugins.CodeCoveragePlugin import matlab.unittest.plugins.codecoverage.CoberturaFormat suite = testsuite("MyTestClass"); runner = testrunner("textoutput"); format = CoberturaFormat("myReport.xml"); plugin = CodeCoveragePlugin.forFolder("myFolder", ... Producing=format,MetricLevel="decision"); runner.addPlugin(plugin) results = runner.run(suite);
MetricLevel
参量指定在结果中包含哪些覆盖率类型。下表显示以 Cobertura XML 格式收集结果时 MetricLevel
的可能值和对应的覆盖率类型。Cobertura XML 格式的结果不支持条件覆盖率或修正条件/决策覆盖率 (MC/DC)。
MetricLevel 的值 | 包括的覆盖率类型 |
---|---|
"statement" (默认值) | 行覆盖率 |
"decision" 、"condition" 或 "mcdc" (需要 MATLAB Test) | 行覆盖率和决策覆盖率 |
R2020a: 建议替换 ProfileReport
ProfileReport
类将被删除请改用 CoverageReport
或 CoberturaFormat
。推荐的类生成的代码覆盖率报告更准确。
要创建代码覆盖率报告而不指定格式,请参阅探查您的代码以改善性能。
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
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)