MATLAB ユニット テストを使用したモデルのテスト
Simulink® Test™ で作成されたテストを MATLAB® ユニット テスト フレームワークを使用して実行できます。フレームワークを使用する場合、次のようになります。
ユニット テストのスクリプト、関数、クラスと一緒にモデル テストを実行可能。
同じフレームワークを使用してモデルとコードのテストが可能。
Jenkins® などの継続的インテグレーション (CI) との統合が可能。
全体的なワークフロー
ユニット テスト フレームワークでテストを実行するには次のようにします。
Simulink Test ファイルから
TestSuiteを作成します。TestRunnerを作成します。TestRunnerをカスタマイズするプラグイン オブジェクトを作成します。以下に例を示します。matlab.unittest.plugins.TAPPluginは、特定の CI で使用する Test Anything Protocol に従った結果のストリームを生成します。sltest.plugins.ModelCoveragePluginは、モデル カバレッジ収集を指定し、コマンド ラインでカバレッジ結果を返せるようにします。テスト マネージャーでカバレッジを設定する場合、このプラグインを使用する必要はありません。
TestRunnerにプラグインを追加します。runメソッドを使用してテストを実行するか、runInParallelメソッドを使用してテストを並列実行します。
考慮事項
ユニット テスト フレームワークを使用してテストを実行するときは、次のことを考慮してください。
テスト マネージャーでテストを無効にすると、ユニット テストを使用してテストにフィルターが適用され、失敗した仮定が結果に反映されます。
テストの用語の比較
ユニット テスト フレームワークには、Simulink Test の機能に類似するプロパティがあります。以下に例を示します。
テスト ケースに反復が含まれている場合、ユニット テストにパラメーター化が含まれます。
テスト ファイルまたはテスト スイートにコールバックが含まれている場合、ユニット テストに 1 つ以上のコールバックのフィクスチャが含まれます。
テスト ケースの反復とユニット テストのパラメーター化
パラメーター化の詳細は反復のプロパティに対応します。
Simulink Test | MATLAB ユニット テスト |
|---|---|
反復タイプ: スクリプト | パラメーター化プロパティ: |
反復タイプ: テーブル | パラメーター化プロパティ: |
反復の名前 | パラメーター化の名前 |
テスト ケース反復オブジェクト | パラメーター化の値 |
テストのコールバックとユニット テストのフィクスチャ
フィクスチャは、テスト ファイルに含まれているコールバックに依存します。テスト ケース自体で実行されるテスト ケースのコールバックはフィクスチャに含まれません。
Simulink Test のコールバック | MATLAB ユニット テストのフィクスチャ |
|---|---|
テスト ファイルのコールバック |
|
テスト スイートのコールバック |
|
ファイルとスイートのコールバック |
|
コールバックなし | フィクスチャなし |
MATLAB® ユニット テストを使用した基本的なワークフロー
この例では、Simulink® Test™ で作成されたテスト ファイルについて、基本的な MATLAB® ユニット テストを作成して実行する方法を示します。テスト スイートを作成してテストを実行し、診断レポートを表示します。
この例を実行する前に、検証エラーによる警告を一時的に無効にします。
warning off Stateflow:Runtime:TestVerificationFailed; warning off Stateflow:cdr:VerifyDangerousComparison;
1.テスト マネージャーでテスト ファイルを作成するか、既存のテスト ファイルで始めます。この例では、verify ステートメントを使用して、AutopilotTestFile で自動操縦システムのコンポーネントをいくつかの要件についてテストします。
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