使用 MATLAB 单元测试测试模型
您可以使用 MATLAB® 单元测试框架来运行用 Simulink® Test™ 编写的测试。使用框架:
允许您与单元测试脚本、函数和类一起执行模型测试。
使用相同的框架实现模型和代码测试。
实现与持续集成 (CI) 系统的集成,例如 Jenkins®。
总体工作流程
要使用单元测试框架运行测试:
从 Simulink Test 文件创建
TestSuite
。创建一个
TestRunner
。创建插件对象来定制
TestRunner
。例如:matlab.unittest.plugins.TAPPlugin
根据测试任何协议生成结果流,以供某些 CI 系统使用。sltest.plugins.ModelCoveragePlugin
指定模型覆盖率收集并允许您将覆盖率结果返回到命令行。如果您在测试管理器中设置了覆盖率,则不需要使用此插件。
将插件添加到
TestRunner
。使用
run
方法运行测试,或者使用runInParallel
方法并行运行测试。
注意事项
使用单元测试框架运行测试时,请考虑以下事项:
如果您在测试管理器中禁用测试,则该测试将使用单元测试进行过滤,结果将反映失败的假设。
测试术语比较
单元测试框架具有与 Simulink Test 中的功能类似的属性。例如,
如果测试用例包含迭代,则单元测试包含参数化。
如果测试文件或测试套件包含回调,则单元测试包含一个或多个回调装置。
测试用例迭代和单元测试参数化
参数化细节与迭代的属性相对应。
Simulink Test | MATLAB 单元测试 |
---|---|
迭代类型:脚本化 | 参数化属性: |
迭代类型:桌子 | 参数化属性: |
迭代名称 | 参数化名称 |
测试用例迭代对象 | 参数化值 |
测试回调和单元测试装置
装置依赖于测试文件中包含的回调。Fixtures 不包括测试用例回调,回调是与测试用例本身一起执行的。
Simulink Test 中的回调 | MATLAB 单元测试中的 Fixtures |
---|---|
测试文件回调 |
|
测试套件回调 |
|
文件和套件回调 | 异构 |
无回调 | 无固定装置 |
使用 MATLAB® 单元测试的基本工作流程
此示例显示如何为在 Simulink® Test™ 中创建的测试文件创建和运行基本 MATLAB® 单元测试。您创建一个测试套件,运行测试,并显示诊断报告。
在运行此示例之前,暂时禁用因验证失败而导致的警告。
warning off Stateflow:Runtime:TestVerificationFailed; warning off Stateflow:cdr:VerifyDangerousComparison;
1.在测试管理器中创作测试文件,或从预先存在的测试文件开始。对于此示例,AutopilotTestFile
使用 verify
语句根据几个需求测试自动驾驶仪系统的组件。
2.从测试文件创建一个 TestSuite
。
apsuite = testsuite('AutopilotTestFile.mldatx');
3.创建测试运行器。
import matlab.unittest.TestRunner
aprunner = TestRunner.withNoPlugins;
4.添加插件以生成测试管理器结果。
import sltest.plugins.TestManagerResultsPlugin
tmr = TestManagerResultsPlugin;
addPlugin(aprunner,tmr)
5.运行测试。
apresults = run(aprunner,apsuite);
6.查看测试摘要,其中显示测试因验证失败而失败。
apresults.Details.SimulinkTestManagerResults
ans = TestResultContainer with properties: TestResult: [1x1 sltest.testmanager.TestCaseResult]
启用警告。
warning on Stateflow:Runtime:TestVerificationFailed; warning on Stateflow:cdr:VerifyDangerousComparison;
另请参阅
Test
| TestResult
| TestRunner
| TestSuite
| matlab.unittest.plugins Package