主要内容

使用 MATLAB 单元测试进行模型测试

您可以使用 MATLAB® 单元测试框架来运行在 Simulink® Test™ 中编写的测试。使用该框架可以:

  • 将模型测试与单元测试脚本、函数和类一起执行。

  • 使用相同的框架实现模型和代码测试。

  • 实现与持续集成 (CI) 系统(例如 Jenkins®)的集成。

整体工作流

要使用单元测试框架运行测试,请执行以下操作:

  1. Simulink Test 文件创建 TestSuite

  2. 创建一个 TestRunner

  3. 创建插件对象以自定义 TestRunner。例如:

  4. 将插件添加到 TestRunner

  5. 使用 run 方法运行测试,或者使用 runInParallel 方法并行运行测试。

注意事项

使用单元测试框架运行测试时,请考虑以下事项:

  • 如果在测试管理器中禁用某个测试,则系统会使用单元测试对该测试进行过滤,结果会反映失败的假设。

测试术语比较

单元测试框架具有与 Simulink Test 中的功能类似的属性。例如,

  • 如果测试用例包含迭代,则单元测试包含参数化。

  • 如果测试文件或测试套件包含回调,则单元测试包含一个或多个回调脚手架。

测试用例迭代和单元测试参数化

参数化详细信息对应于迭代的属性。

Simulink Test

MATLAB 单元测试

迭代类型:脚本化

参数化属性:ScriptedIteration

迭代类型:表

参数化属性:TableIteration

迭代名称

参数化名称

测试用例迭代对象

参数化值

测试回调和单元测试脚手架

脚手架依赖于测试文件中包含的回调。脚手架不包含测试用例回调,测试用例回调与测试用例本身一起执行。

Simulink Test 中的回调

MATLAB 单元测试中的脚手架

测试文件回调

FileCallbacksFixture

测试套件回调

SuiteCallbacksFixture

文件和套件回调

异构 CallbacksFixture,包含 FileCallbacksFixtureSuiteCallbacksFixture

无回调

无脚手架

使用 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;

另请参阅

| | | |

主题