您可以创建与连续集成(CI)系统(如Jenkins)兼容的模型测试™. 要创建与CI兼容的结果,请运行金宝app®测试™用MATLAB编写文件®单元测试。
要运行ci兼容测试,请遵循以下常规步骤:
从MLDATX测试文件创建一个测试套件。
创建一个测试运行器。
为测试输出或覆盖结果创建插件。
对于模型覆盖,使用ModelCoveragePlugin
和cobertura格式
.以Cobertura格式收集模型覆盖率时:
在Cobertura XML中只反映了顶级模型的覆盖范围。
只反映模型决策覆盖率,并将其映射到Cobertura XML中的条件元素。
为ci兼容的输出创建插件。
将插件添加到测试输出或覆盖结果中。
将测试输出插件或覆盖结果插件添加到测试运行器中。
运行测试。
此示例演示如何测试模型、发布测试管理器结果以及以TAP格式输出结果,只需执行一次。
您可以使用MATLAB®Unit Test创建一个测试套件和一个测试运行器,并使用以下插件自定义运行器:
matlab.unittest.plugins.TestReportPlugin
生成MATLAB测试报告。
sltest.plugins.TestManagerResultsPlugin
将测试管理器结果添加到MATLAB测试报告中。
matlab.unittest.plugins.TAPPlugin
输出结果到TAP文件。
测试用例创建一个控制器子系统的方波输入,并扫描25次参数迭代一个
和b
.该测试比较了α
输出到一个公差为的基线0.0046
.在输出超过此公差的迭代中,测试失败。
在运行此示例之前,请确保工作文件夹是可写的。
1.打开Simulink金宝app®测试™ 测试文件。
测试文件= fullfile (“f14ParameterSweepTest.mldatx”);sltest.testmanager.view;sltest.testmanager.load(测试文件);
2.在Test Manager中,为报告配置测试文件。
下测试文件选项中,选择执行后生成报告。此部分将展开,显示多个报告选项。有关详细信息,请参阅用测试文件保存报告选项.
3.从Simulink®测试创建测试套件™ 测试文件。金宝app
进口matlab.unittest.TestSuite套件= testsuite (“f14ParameterSweepTest.mldatx”);
4.创建一个测试运行器。
进口matlab.unittest.TestRunnerf14runner = TestRunner.withNoPlugins;
5.添加TestReportPlugin
给测试运行器。
该插件生成一个MATLAB测试报告F14Report.pdf
.
进口matlab.unittest.plugins.TestReportPluginpdfFile =“F14Report.pdf”;trp = TestReportPlugin.producingPDF (pdfFile);addPlugin (f14runner trp)
6.添加TestManagerResultsPlugin
给测试运行器。
该插件将Test Manager结果添加到MATLAB测试报告中。
进口sltest.plugins.TestManagerResultsPlugintmr=TestManagerResultsPlugin;addPlugin(f14runner,tmr)
7.添加塔普卢金
给测试运行器。
插件输出到F14Output.tap
文件
进口matlab.unittest.plugins.TAPPlugin进口matlab.unittest.plugins.ToFile磁带文件=“F14Output.tap”;tap=TAPPlugin.producingVersion13(ToFile(tapFile));addPlugin(f14runner,tap)
8.运行测试。
几次迭代失败,其中信号基线差异超过了容忍标准。
结果=运行(f14runner套件);
正在生成测试报告。请稍候。正在准备测试报告的内容。正在向测试报告添加内容。正在将测试报告写入文件。测试报告已保存到:C:\Users\nali\OneDrive-MathWorks\Documents\MATLAB\ExampleManager\nali.Bdoc21b.j1587977.qual3\simulinktest-ex40056435\F14Report.pdf金宝app
测试运行程序的一次执行将生成两个报告:
包含测试管理器结果的MATLAB测试报告。
可与CI系统一起使用的TAP格式文件。
sltest.testmanager.clearResults sltest.testmanager.clear sltest.testmanager.close
这个示例展示了如何生成用于持续集成的模型覆盖结果。覆盖率报告采用Cobertura格式。使用MATLAB单元金宝app测试运行Simulink®Test™测试文件。
1.导入类并从测试文件创建测试套件AutopilotTestFile.mldatx
.
进口matlab.unittest.TestRunner伶俐的= sltest.testmanager.TestFile ('自动驾驶仪文件.mldatx'); apsuite=testsuite(aptest.FilePath);
2.创建一个测试运行器。
trun=TestRunner.withNoPlugins;
3.设置要收集的覆盖率度量。这个例子使用决策覆盖。在Cobertura输出中,决策覆盖率被列为条件元素。
进口sltest.plugins.coverage.CoverageMetrics之外= CoverageMetrics (“决定”,真正的);
4.设置覆盖率报告属性。此示例生成一个文件R13Coverage.xml
在当前工作文件夹中。请确保您的工作文件夹具有写入权限。
进口sltest.plugins.coverage.ModelCoverageReport进口matlab.unittest.plugins.codecoverage.CoberturaFormatrptfile=“R13Coverage.xml”;rpt = CoberturaFormat (rptfile)
rpt=CoberturaFormat,不带属性。
5.创建模型覆盖率插件。该插件收集覆盖率指标并生成Cobertura格式的报告。
进口sltest.plugins.ModelCoveragePluginmcp = ModelCoveragePlugin (“收集”之外,“生产”,rpt)
mcp=ModelCoveragePlugin,其属性为:RecordModelReferenceOverage:“”度量设置:[1x1 sltest.plugins.coverage.CoverageMetrics]
6.将覆盖率插件添加到测试运行程序中。
添加插件(trun,mcp)%关闭命令行警告:警告关Stateflow:cdr:verifydangery比较警告关Stateflow:运行时:TestVerificationFailed
7.运行测试。
apsuite APResult =运行(紫)
APResult = TestResult with properties: Name: 'AutopilotTestFile > Basic Design Test Cases/Requirement 1.3 Test' Passed: 0 Failed: 1 Incomplete: 0 Duration: 4.8707 Details: [1x1 struct]总计:0 Passed, 1 Failed, 0 Incomplete. 4.8707秒测试时间。
8.使再能警告。
警告在…上Stateflow:cdr:verifydangery比较警告在…上Stateflow:运行时:TestVerificationFailed
TestRunner
|TestSuite
|sltest.plugins.ModelCoveragePlugin
|sltest.plugins.TestManagerResultsPlugin
|matlab.unittest.plugins.TestReportPlugin
|matlab.unittest.plugins.TAPPlugin