Main Content

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

sltest.plugins.ModelCoveragePlugin 类

命名空间: sltest.plugins

使用 MATLAB 单元测试框架收集模型覆盖率

描述

sltest.plugins.ModelCoveragePlugin 创建覆盖率报告并允许使用 MATLAB® 单元测试框架设置运行 Simulink® Test™ 和基于 MATLAB 的 Simulink 测试用例的覆盖率度量。设置所需的 sltest.plugins.ModelCoveragePlugin 属性值,并将 sltest.plugins.ModelCoveragePlugin 的实例添加到测试运行器。对于基于 MATLAB 的 Simulink 测试,对 simulate 方法的调用会在测试运行期间收集覆盖率。这些覆盖率结果可在测试管理器结果中找到。如果您拥有 Parallel Computing Toolbox™ 的许可证,则可以使用 ModelCoveragePlugin 进行并行测试执行。

注意

如果您在测试管理器中打开基于 MATLAB 的 Simulink 测试文件,启用覆盖率,并设置覆盖率度量,则无需使用 sltest.plugins.ModelCoveragePlugin。但是,如果您使用 sltest.plugins.ModelCoveragePlugin 并在测试管理器中设置覆盖率,则测试管理器将使用 sltest.plugins.ModelCoveragePlugin 对象中的设置。

创建对象

mcp = sltest.plugins.ModelCoveragePlugin(Properties) 创建具有指定属性的模型覆盖率插件对象 mcp

您还可以导入插件,然后使用类名创建该插件的实例:

import sltest.plugins.ModelCoveragePlugin
mcp = ModelCoveragePlugin(Properties)

属性

全部展开

引用模型的覆盖率集合,指定为数字或逻辑 1 (true) 或 0 (false)。

示例: 'RecordModelReferenceCoverage',true

属性:

SetAccess
public
GetAccess
public

覆盖率收集选项,指定为 sltest.plugins.coverage.CoverageMetrics 对象。

示例: 'Collecting',covSettings

示例: 'Collecting',CoverageMetrics('MCDC',true,'Decision',true,'Condition'true)

属性:

SetAccess
public
GetAccess
public

模型覆盖率报告选项,指定为 sltest.plugins.coverage.ModelCoverageReportmatlab.unittest.plugins.codecoverage.CoberturaFormat 对象。

示例: 'Producing',mcr

示例: 'Producing',ModelCoverageReport('reports/coverage/modelcoverage')

示例: 'Producing',CoberturaFormat('reports/coverage/cobertura_modelcoverage')

属性:

SetAccess
public
GetAccess
public

模型是否实现、测试和验证需求,指定为数字或逻辑 1 (true) 或 0 (false)。

示例: 'ScopeToRequirements',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 中推出