使用 MATLAB 单元测试进行模型测试
您可以使用 MATLAB® 单元测试框架来运行在 Simulink® Test™ 中编写的测试。使用该框架可以:
将模型测试与单元测试脚本、函数和类一起执行。
使用相同的框架实现模型和代码测试。
实现与持续集成 (CI) 系统(例如 Jenkins®)的集成。
整体工作流
要使用单元测试框架运行测试,请执行以下操作:
从 Simulink Test 文件创建
TestSuite。创建一个
TestRunner。创建插件对象以自定义
TestRunner。例如:matlab.unittest.plugins.TAPPlugin根据 Test Anything Protocol 生成结果流,以供特定 CI 系统使用。sltest.plugins.ModelCoveragePlugin指定模型覆盖率收集,并可让您将覆盖率结果返回到命令行。如果您在测试管理器中设置了覆盖率,则无需使用此插件。
将插件添加到
TestRunner。使用
run方法运行测试,或者使用runInParallel方法并行运行测试。
注意事项
使用单元测试框架运行测试时,请考虑以下事项:
如果在测试管理器中禁用某个测试,则系统会使用单元测试对该测试进行过滤,结果会反映失败的假设。
测试术语比较
单元测试框架具有与 Simulink Test 中的功能类似的属性。例如,
如果测试用例包含迭代,则单元测试包含参数化。
如果测试文件或测试套件包含回调,则单元测试包含一个或多个回调脚手架。
测试用例迭代和单元测试参数化
参数化详细信息对应于迭代的属性。
Simulink Test | MATLAB 单元测试 |
|---|---|
迭代类型:脚本化 | 参数化属性: |
迭代类型:表 | 参数化属性: |
迭代名称 | 参数化名称 |
测试用例迭代对象 | 参数化值 |
测试回调和单元测试脚手架
脚手架依赖于测试文件中包含的回调。脚手架不包含测试用例回调,测试用例回调与测试用例本身一起执行。
Simulink Test 中的回调 | MATLAB 单元测试中的脚手架 |
|---|---|
测试文件回调 |
|
测试套件回调 |
|
文件和套件回调 | 异构 |
无回调 | 无脚手架 |
使用 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: [1×1 sltest.testmanager.TestCaseResult]
启用警告。
warning on Stateflow:Runtime:TestVerificationFailed; warning on Stateflow:cdr:VerifyDangerousComparison;
另请参阅
Test | TestResult | TestRunner | TestSuite | matlab.unittest.plugins Package