在测试管理器中使用基于 MATLAB 的 Simulink 测试
此示例显示如何创建基于 MATLAB® 的 Simulink® 测试、生成基线以及在测试管理器中加载、运行和查看测试结果。当您将基于 MATLAB 的 Simulink 测试用例代码 .m
文件加载到测试管理器中时,该测试用例的出现和行为与直接在测试管理器中创建的测试用例相同。唯一的区别是,对于基于 MATLAB 的 Simulink 测试,您只能在测试文件级别选择或更改覆盖率收集和度量,而不能在测试套件或测试用例级别选择或更改覆盖率收集和度量。
此示例使用内部测试框架 sltestMATLABBasedTestExample_harnrss
根据生成的基线验证 sltestMATLABBasedTestExample
模型。
基线测试类定义文件
类定义文件 BaselineTest.m
已创建并随本示例提供。
测试用例文件 BaselineTest.m
衍生自 sltest.TestCase
,而 sltest.TestCase
又衍生自 matlab.unittest.TestCase
。所有 matlab.unittest.TestCase
方法也可作为 sltest.TestCase
的一部分使用。
基线测试文件内容
类定义文件 BaselineTest.m
包含:
classdef BaselineTest < sltest.TestCase
methods (Test) function testOne(testCase) testCase.loadSystem('sltestMATLABBasedTestExample'); evalin('base','gain2_var = 2.01;'); simOut = testCase.simulate('sltestMATLABBasedTestExample',... 'WithHarness','sltestMATLAbBasedTestExample_harness'); testCase.verifySignalsMatch(simOut,'baseline1.mat','AbsTol',0.015); end end
end
该文件包括:
从
sltest.TestCase
继承。一个名为
testOne
的测试函数,位于具有Test
属性的methods
模块中。
testOne
函数:
使用
testCase.loadSystem
方法加载sltestMATLABBasedTestExample
模型。将模型中的
gain2_var
的值更改为 2.01。使用
testCase.simulate
方法通过框架仿真模型。使用
testCase.verifySignalsMatch
方法将simulate
、simOut
的输出与名为baseline1.mat
的基线数据 MAT 文件进行比较。它还设定了绝对容差。如果在运行测试之前从文件中删除容差设置,则测试将失败,因为gain2_var
的值已从模型中的原始值更改。
基线数据文件
基线数据文件 baseline1.mat
已经生成并随本示例提供。基线数据文件是使用以下流程创建的:
1.使用 runtests('BaselineTest/testOne','GenerateBaselines',true)
。
2.基线测试运行后,仿真数据检查报告显示信号的输出。查看报告中的实际结果并批准基线数据。数据保存在 MAT 文件中,本例中该文件名为 baseline1.mat
。
在测试管理器中打开基于 MATLAB 的 Simulink Test
1.打开测试管理器。
sltest.testmanager.view
2.在测试管理器中,点击打开并选择打开基于 MATLAB 的 Simulink Test (.m)。
3.在打开文件对话框中,选择 BaselineTest.m
。
测试管理器使用 BaselineTest.m
文件中的 testOne 填充测试浏览器。
设置覆盖率收集
如果您想要收集测试的覆盖率,请选择 BaselineTest 文件。在覆盖率设置部分,选择要收集的覆盖率和覆盖率度量。如果您想要收集测试的覆盖率,请在测试浏览器窗格中选择测试文件 BaselineTest
。在“覆盖率设置”部分,选择要收集的覆盖率选项和覆盖率度量选项。
在测试管理器中运行并可视化结果
1.单击运行执行测试。
2.测试完成后,展开结果和工件窗格中的所有行。注意 testOne
已通过。
3.要查看数据比较,请选择 testOne > 仿真输出比较结果下的 Out2:1。仿真和基线信号在指定的容差范围内匹配。
4.如果您收集了覆盖率,请选择基线测试测试文件并查看聚合覆盖率结果部分。
4.如果您收集了覆盖率,请选择 BaselineTest
测试文件并查看聚合覆盖率结果部分。
清除并关闭测试管理器
sltest.testmanager.clear sltest.testmanager.clearResults sltest.testmanager.close