主要内容

收集声明和功能覆盖率的MATLAB源代码

当您运行测试时,您可以收集和访问代码覆盖率信息为你的MATLAB®源代码添加的一个实例matlab.unittest.plugins.CodeCoveragePlugin测试运行器类。在MATLAB中,使用创建的插件matlab.unittest.plugins.codecoverage.CoverageResultmatlab.unittest.plugins.codecoverage.CoverageReport格式对象提供了声明和功能覆盖率信息。关于声明的更多信息和功能覆盖率,明白了类型的代码覆盖率的MATLAB源代码

这个例子展示了如何收集、以编程方式访问和生成报告包括声明和功能覆盖率信息的源代码文件。该文件定义了QuadraticPolynomial类,它表示二次多项式。类构造函数首先验证多项式系数的数值,然后使用这些值来初始化类的属性。类包括解决方法返回指定的二次多项式的根,和情节周围的多项式方法绘制它的对称轴。查看完整的代码QuadraticPolynomial,请参阅QuadraticPolynomial类定义

运行测试和分析代码覆盖率信息

在当前文件夹,保存QuadraticPolynomial类定义在一个文件中命名QuadraticPolynomial.m。然后,创建一个QuadraticPolynomialTest1测试类在当前文件夹。添加两个测试测试的类的方法解决方法对真实和虚构的解决方案。万博 尤文图斯

classdefQuadraticPolynomialTest1 < matlab.unittest.TestCase方法(测试)函数realSolution (testCase) p = QuadraticPolynomial (1、3、2);actSolution = p.solve ();expSolution = (1 - 2);testCase.verifyEqual (actSolution expSolution)结束函数imaginarySolution (testCase) p = QuadraticPolynomial (1、2、10);actSolution = p.solve ();expSolution = [1-3i 1 + 3];testCase.verifyEqual (actSolution expSolution)结束结束结束

运行测试和执行代码覆盖分析,首先创建一个测试运行器与一个插件,它提供了编程访问声明和功能覆盖率信息的源代码文件QuadraticPolynomial.m

进口matlab.unittest.plugins.CodeCoveragePlugin进口matlab.unittest.plugins.codecoverage.CoverageResult跑步者= testrunner (“textoutput”);格式= CoverageResult;p = CodeCoveragePlugin.forFile (“QuadraticPolynomial.m”、生产=格式);addPlugin(选手,p)

创建一个测试套件QuadraticPolynomialTest1类和运行测试。测试通过。

suite1 = testsuite (“QuadraticPolynomialTest1”);运行(跑步、suite1);
运行QuadraticPolynomialTest1 . .完成QuadraticPolynomialTest1 __________

测试运行后,结果财产的CoverageResult对象持有报道的结果。访问语句覆盖率总结的报道结果。返回向量表示测试8 17语句的执行文件,导致47%的语句覆盖率。语句覆盖率很低,因为测试不执行的代码和代码抛出一个错误情节方法。

result1 = format.Result编写此表达式;statementSummary = coverageSummary (result1,编写此表达式“声明”)
statementSummary =1×28日17

访问功能覆盖率总结。摘要表明功能覆盖率是75%,因为测试错过了四个方法之一QuadraticPolynomial类(情节)。

functionSummary = coverageSummary (result1,编写此表达式“功能”)
functionSummary =1×23 4

现在,生成一个HTML代码覆盖率报告报道的结果。报告显示有关声明的信息和功能覆盖率和使用不同的颜色来强调或错过的语句和函数执行。

generateHTMLReport (result1)编写此表达式

你可以与HTML代码覆盖率报告。例如,在整体报道总结部分中,您可以选择一个类型的报道目前看查看详细信息,覆盖类型列表。这图显示了源细节部分语句覆盖,显示所有的语句覆盖或错过了。

运行额外的测试来提高覆盖率

创建测试执行的部分源代码没有执行suite1。在当前文件夹,创建另一个测试类命名QuadraticPolynomialTest2。添加一个测试方法对非数字的类测试输入和另一个测试方法测试策划多项式的性质。

classdefQuadraticPolynomialTest2 < matlab.unittest.TestCase方法(测试)函数nonnumericInput (testCase) testCase.verifyError (@ () QuadraticPolynomial (1,“3”2),“QuadraticPolynomial: InputMustBeNumeric”)结束函数plotPolynomial (testCase) p = QuadraticPolynomial (1、3、2);无花果=图;testCase.addTeardown (@close无花果)ax =轴(图);p.plot (ax) actYLabelText = ax.YLabel.String;expYLabelText =' 1.00 x ^ 2 - 3.00 - 2.00 x +”;testCase.verifyEqual (actYLabelText expYLabelText)结束结束结束

创建一个测试套件QuadraticPolynomialTest2类和运行测试。测试通过。

suite2 = testsuite (“QuadraticPolynomialTest2”);运行(跑步、suite2);
QuadraticPolynomialTest2运行。
。完成QuadraticPolynomialTest2 __________

在这个例子中,运行不同的测试套件资格相同的源代码。报告总聚合覆盖这些测试运行,生成一个HTML报告的联盟覆盖对应测试运行的结果。报告显示,这两个测试套件充分锻炼相结合的语句和函数的源代码。

result2 = format.Result;generateHTMLReport (result1 + result2)编写此表达式

QuadraticPolynomial类定义

这段代码提供的完整内容QuadraticPolynomial类。

classdefQuadraticPolynomial属性A, B, C%的系数* x ^ 2 + b * x + c结束方法函数obj = QuadraticPolynomial (a, b, c)如果~ isa (,“数字”isa (b) | | ~“数字”)| | ~ isa (c,“数字”)错误(“QuadraticPolynomial: InputMustBeNumeric”,“系数必须是一个数字。”)其他的obj。一个=;obj。B = B;obj。C = C;结束结束函数根=解决(obj)%恢复解决方案* 万博 尤文图斯x ^ 2 + b * x + c = 0δ= calculateDelta (obj);根(1)= (obj。B -倍根号(δ))/ (2 * obj.A);根(2)= (obj。B +倍根号(δ))/ (2 * obj.A);结束函数情节(obj, ax)%画出* x ^ 2 + b * x + c绕着它的对称轴δ= calculateDelta (obj);x0 = -obj.B / (2 * obj.A);x1 = abs (sqrt(δ))/ obj.A;x = x0 + linspace (x1, x1);y = obj.A * x。^ 2 + obj。B * x + obj.C;情节(ax, x, y)包含(“x”)ylabel (sprintf (“% .2fx ^ 2% + .2fx % + .2f”,obj.B obj.A obj.C))结束结束方法(访问=私人)函数δ= calculateDelta (obj)δ= obj。B ^ 2 - 4 * obj.A * obj.C;结束结束结束

另请参阅

相关的话题