Main Content

本页采用了机器翻译。点击此处可查看英文原文。

sltest.plugins.coverage.CoverageMetrics 类

命名空间: sltest.plugins.coverage

指定使用 MATLAB 单元测试框架运行的测试的覆盖率度量

描述

使用 sltest.plugins.coverage.CoverageMetrics 类来指定覆盖率度量。将覆盖率度量对象传递给模型覆盖率插件对象。

sltest.plugins.coverage.CoverageMetrics 类是 handle 类。

类属性

HandleCompatible
true

有关类属性的信息,请参阅 类属性

创建对象

cmo = sltest.plugins.coverage.CoverageMetrics(Properties) 创建具有指定属性的覆盖率度量对象。

您还可以导入插件,然后使用类名创建对象:

import sltest.plugins.coverage.CoverageMetrics
cmo = CoverageMetrics(Properties)

属性

全部展开

启用或禁用决策覆盖率收集。

示例: 'Decision',true

属性:

SetAccess
public
GetAccess
public

启用或禁用条件覆盖率收集。如果启用条件覆盖率,覆盖报告则同时显示条件覆盖和决策覆盖率。

示例: 'Condition',true

属性:

SetAccess
public
GetAccess
public

启用或禁用修正条件/决策覆盖率收集。如果启用 MCDC,条件和决策覆盖率也会被收集并包含在覆盖率报告中。

示例: 'MCDC',true

属性:

SetAccess
public
GetAccess
public

启用或禁用查找表覆盖率收集。

示例: 'LookupTable',true

属性:

SetAccess
public
GetAccess
public

启用或禁用信号范围覆盖率收集。

示例: 'SignalRange',true

属性:

SetAccess
public
GetAccess
public

启用或禁用信号大小覆盖率收集。

示例: 'SignalSize',true

属性:

SetAccess
public
GetAccess
public

启用或禁用 Simulink Design Verifier 模块覆盖率收集。

示例: 'SimulinkDesignVerifier',true

属性:

SetAccess
public
GetAccess
public

启用或禁用记录模块因整数溢出而饱和的次数。

示例: 'SaturationOnIntegerOverflow',true

属性:

SetAccess
public
GetAccess
public

启用或禁用关系边界覆盖率。

示例: 'RelationalBoundary',true

属性:

SetAccess
public
GetAccess
public

示例

全部折叠

此示例显示如何使用 MATLAB® 单元测试来收集在 Simulink®模型上运行的测试的覆盖率。

在收集修正条件/决策 (MCDC)覆盖率的同时,运行 AutopilotTestFile.mldatx 测试文件中的测试。

1.导入示例的测试运行器和插件。

import matlab.unittest.TestRunner
import sltest.plugins.ModelCoveragePlugin
import sltest.plugins.coverage.CoverageMetrics
import sltest.plugins.coverage.ModelCoverageReport
import matlab.unittest.plugins.codecoverage.CoberturaFormat

2.在当前工作目录中创建一个子文件夹,并创建一个指定该新文件夹的 ModelCoverageReport 对象。

mkdir('./myReports/coverage');
path = './myReports/coverage';
mcr = ModelCoverageReport(path,'ReportName','RollRefCov');

3.创建模型覆盖率插件对象和覆盖率度量对象。在此示例中,您使用 MCDC 覆盖率和记录覆盖率来引用模型。

mcdcMet = CoverageMetrics('Decision',true,'Condition',true,'MCDC',true);

covSettings = ModelCoveragePlugin('RecordModelReferenceCoverage',true,...
    'Collecting',mcdcMet,'Producing',mcr);

4.从测试文件创建 MATLAB® 单元测试测试套件。

tf = sltest.testmanager.TestFile('AutopilotTestFile.mldatx');
APSuite = testsuite(tf.FilePath);

5.创建没有任何插件的测试运行器,然后将覆盖率插件添加到运行器。

APRun = TestRunner.withNoPlugins();
addPlugin(APRun,covSettings);

6.运行该套件。

% Turn off the command line warnings.
warning off Stateflow:cdr:VerifyDangerousComparison
warning off Stateflow:Runtime:TestVerificationFailed

APResult = run(APRun,APSuite)
Coverage Report for RollAutopilotMdlRef/Roll Reference
    /tmp/Bdoc24a_2589924_3008987/tp8a7d4faf/simulinktest-ex63642652/myReports/coverage/RollRefCov.html
APResult = 
  TestResult with properties:

          Name: 'AutopilotTestFile > Basic Design Test Cases/Requirement 1.3 Test'
        Passed: 1
        Failed: 0
    Incomplete: 0
      Duration: 13.5094
       Details: [1x1 struct]

Totals:
   1 Passed, 0 Failed, 0 Incomplete.
   13.5094 seconds testing time.

7.您可以打开命令行输出中的链接来查看覆盖率报告。

8.您还可以创建 Cobertura XML 格式的报告。创建一个没有插件的新测试运行器,添加 ModelCoveragePlugin,并运行测试套件。Cobertura 报告已保存到工作文件夹。

CobRun = TestRunner.withNoPlugins;
addPlugin(CobRun,ModelCoveragePlugin('Producing',...
    CoberturaFormat('CoverageResults.xml')));
CobResult = run(CobRun,APSuite);

清理。清除结果并重新启用警告。

warning on Stateflow:cdr:VerifyDangerousComparison
warning on Stateflow:Runtime:TestVerificationFailed

sltest.testmanager.clearResults;
sltest.testmanager.clear;
sltest.testmanager.close;

版本历史记录

在 R2018a 中推出