matlab.unittest.plugins.DiagnosticsRecordingPlugin クラス
名前空間: matlab.unittest.plugins
テスト結果の診断を記録するプラグイン
説明
matlab.unittest.plugins.DiagnosticsRecordingPlugin
クラスは、ユニット テストからの診断情報へのプログラムによるアクセスを可能にします。
このクラスはテスト結果の診断を記録するプラグインを作成します。テスト ランナーは、これらの診断を TestResult
オブジェクトの Details
プロパティの DiagnosticRecord
配列として記録します。DiagnosticRecord
配列の各要素は、個々のテストの 1 イベントに対応します。
関数 runtests
、入力なしの関数 testrunner
、TestSuite
または TestCase
の run
メソッドを使用してテストを実行する場合、テスト フレームワークは既定でこのプラグインを使用します。関数 runperf
または TimeExperiment
の run
メソッドを使用してパフォーマンス テストを実行した場合も、テスト フレームワークは既定でこのプラグインを使用します。
構築
plugin = matlab.unittest.plugins.DiagnosticsRecordingPlugin
は、テスト結果の診断を記録するプラグインを作成します。既定では、プラグインは検定エラーとログが作成されたイベントを記録します。
plugin = matlab.unittest.plugins.DiagnosticsRecordingPlugin(
は、1 つ以上の名前と値の引数を使用してオプションを指定します。たとえば、Name,Value
)plugin = matlab.unittest.plugins.DiagnosticsRecordingPlugin("IncludingPassingDiagnostics",true)
は検定エラーとログが作成されたイベントの診断に加えて、パスした診断を記録するプラグインを作成します。
入力引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
例: plugin = matlab.unittest.plugins.DiagnosticsRecordingPlugin(IncludingPassingDiagnostics=true)
R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name
を引用符で囲みます。
例: plugin = matlab.unittest.plugins.DiagnosticsRecordingPlugin("IncludingPassingDiagnostics",true)
IncludingPassingDiagnostics
— パスしたテストの診断を記録するかどうかのインジケーター
false
(既定値) | true
パスしたテストの診断を記録するかどうか。false
または true
として指定します。既定では、プラグインはパスしたテストの診断を記録しません。
データ型: logical
LoggingLevel
— 記録する診断ログの最大レベル
1 (既定値) | 0 | 2 | 3 | 4 | matlab.automation.Verbosity
列挙
記録する診断ログの最大レベル。0 ~ 4 の整数値または matlab.automation.Verbosity
列挙オブジェクトとして指定します。このプラグインは、このレベル以下でログが作成された診断情報を記録します。整数値は matlab.automation.Verbosity
列挙のメンバーに対応します。
既定で、プラグインは matlab.automation.Verbosity.Terse
レベル (レベル 1) でログに記録された診断を記録します。診断ログを除外するには、LoggingLevel
を Verbosity.None
(レベル 0) に指定します。
診断ログとは、log (TestCase)
メソッドまたは log (Fixture)
メソッドの呼び出しによってテスト フレームワークに送る診断です。
数値表現 | 列挙型メンバー名 | 詳細レベルの説明 |
---|---|---|
0 | None | 情報なし |
1 | Terse | 最小限の情報 |
2 | Concise | 中程度の情報量 |
3 | Detailed | ある程度の補足的な情報 |
4 | Verbose | 多くの補足的な情報 |
OutputDetail
— 記録するイベントの詳細レベル
3 (既定値) | 0 | 1 | 2 | 4 | matlab.automation.Verbosity
列挙
記録するイベントの詳細レベル。0 ~ 4 の整数値または matlab.automation.Verbosity
列挙オブジェクトとして指定します。整数値は matlab.automation.Verbosity
列挙のメンバーに対応します。
プラグインは、パスしたイベント、失敗したイベント、およびログに記録されたイベントを、OutputDetail
で指定された詳細レベルで記録します。既定で、プラグインはイベントを matlab.automation.Verbosity.Detailed
レベル (レベル 3) で記録します。
数値表現 | 列挙型メンバー名 | 詳細レベルの説明 |
---|---|---|
0 | None | 情報なし |
1 | Terse | 最小限の情報 |
2 | Concise | 中程度の情報量 |
3 | Detailed | ある程度の補足的な情報 |
4 | Verbose | 多くの補足的な情報 |
プロパティ
IncludePassingDiagnostics
— パスしたイベントの診断を記録するかどうかのインジケーター
false
(既定値) | true
この プロパティ は読み取り専用です。
パスしたイベントの診断を記録するかどうかのインジケーター。false
または true
として返されます。このプロパティは既定で false
です。作成時にこれを true
として指定できます。
データ型: logical
LoggingLevel
— 診断ログの最大詳細レベル
matlab.automation.Verbosity
列挙オブジェクト
この プロパティ は読み取り専用です。
プラグインが記録する診断ログの最大詳細レベル。matlab.automation.Verbosity
列挙オブジェクトとして返されます。このプラグインは、このレベル以下でログが作成された診断情報を記録します。このプロパティの既定値は matlab.automation.Verbosity.Terse
です。プラグインの作成時に異なるログ レベルを指定できます。
診断ログとは、log (TestCase)
メソッドまたは log (Fixture)
メソッドの呼び出しによってテスト フレームワークに送る診断です。
OutputDetail
— 表示するイベントの詳細レベル
matlab.automation.Verbosity
列挙オブジェクト
この プロパティ は読み取り専用です。
表示するイベントの詳細レベル。matlab.automation.Verbosity
列挙オブジェクトとして返されます。プラグインはパスしたイベント、失敗したイベント、およびログに記録されたイベントを、OutputDetail
で指定された詳細レベルで表示します。このプロパティの既定値は matlab.automation.Verbosity.Detailed
です。プラグインの作成時に、異なる出力詳細を指定できます。
コピーのセマンティクス
ハンドル。コピー操作に対するハンドル クラスの影響については、オブジェクトのコピーを参照してください。
例
テスト結果の診断を記録
作業フォルダーに、以下のテスト クラスを含む ExampleTest.m
ファイルを作成します。このテストの目的は DiagnosticsRecordingPlugin
クラスの使用方法を説明することであり、代表的なユニット テストを示すことではありません。
classdef ExampleTest < matlab.unittest.TestCase methods (Test) function testA(testCase) testCase.log(1,'Terse log message') % logs testCase.log(3,'Detailed log message') % logs testCase.verifyEqual(3+2,5) % passes testCase.assumeTrue(true) % passes testCase.verifyGreaterThan(5, 9) % fails testCase.assertEqual(3.14,pi) % fails/incomplete end function testB(testCase) % This test contains an intentional error - passing a character % instead of a variable to the ones function. a = [1 2]; testCase.verifyEqual(ones('a'),[1 1]); % errors end end end
コマンド プロンプトで ExampleTest
クラスからテスト スイートを作成します。
suite = testsuite('ExampleTest');
プラグインなしでテスト ランナーを作成します。このコードはメッセージを表示しないランナーを作成し、インストールされたプラグインの完全な制御を可能にします。テスト ランナーに DiagnosticsRecordingPlugin
インスタンスを追加します。
import matlab.unittest.TestRunner import matlab.unittest.plugins.DiagnosticsRecordingPlugin runner = TestRunner.withNoPlugins; runner.addPlugin(DiagnosticsRecordingPlugin)
テストを実行します。
results = runner.run(suite);
2 番目のテストの結果を表示します。テストは失敗し完了しません。
results(2)
ans = TestResult with properties: Name: 'ExampleTest/testB' Passed: 0 Failed: 1 Incomplete: 1 Duration: 0.0268 Details: [1×1 struct] Totals: 0 Passed, 1 Failed (rerun), 1 Incomplete. 0.026778 seconds testing time.
診断記録のインデックスを指定して、さらに情報を表示します。テストはキャッチされていない例外をスローします。
results(2).Details.DiagnosticRecord
ans = ExceptionDiagnosticRecord with properties: Event: 'ExceptionThrown' EventScope: TestMethod EventLocation: 'ExampleTest/testB' Exception: [1×1 MException] AdditionalDiagnosticResults: [1×0 matlab.automation.diagnostics.DiagnosticResult] Stack: [1×1 struct] Report: 'Error occurred in ExampleTest/testB and it did not run to completion...'
最初のテスト testA
の診断記録を収集します。
testA_records = results(1).Details.DiagnosticRecord
testA_records = 1×3 heterogeneous DiagnosticRecord (LoggedDiagnosticRecord, QualificationDiagnosticRecord) array with properties: Event EventScope EventLocation Stack Report
testA
についてプラグインが記録したイベントを表示します。このプラグインは詳細レベル Terse
でログが作成されたメッセージと、検証エラーおよびアサーション エラーを記録します。
{testA_records.Event}'
ans = 3×1 cell array {'DiagnosticLogged' } {'VerificationFailed'} {'AssertionFailed' }
すべての詳細レベルのメッセージを記録し、パスした診断を含めるプラグインを作成します。テストを再実行し、testA
の診断記録を収集します。
runner = TestRunner.withNoPlugins; runner.addPlugin(DiagnosticsRecordingPlugin( ... 'IncludingPassingDiagnostics',true,'OutputDetail',4,'LoggingLevel',4)) results = runner.run(suite); testA_records = results(1).Details.DiagnosticRecord;
testA
についてプラグインが記録したイベントを表示します。このプラグインは、すべての検定と log
メソッドの呼び出しに関する診断情報を記録します。
{testA_records.Event}'
ans = 6×1 cell array {'DiagnosticLogged' } {'DiagnosticLogged' } {'VerificationPassed'} {'AssumptionPassed' } {'VerificationFailed'} {'AssertionFailed' }
失敗したイベントの診断記録をすべて選択します。
failedRecords = selectFailed(testA_records)
failedRecords = 1×2 QualificationDiagnosticRecord array with properties: Event EventScope EventLocation TestDiagnosticResults FrameworkDiagnosticResults AdditionalDiagnosticResults Stack Report
パスしたイベントの診断記録をすべて選択し、1 番目の記録のレポートを表示します。
passedRecords = selectPassed(testA_records); passedRecords(1).Report
ans = 'Verification passed in ExampleTest/testA. --------------------- Framework Diagnostic: --------------------- verifyEqual passed. --> The numeric values are equal using "isequaln". Actual Value: 5 Expected Value: 5 ------------------ Stack Information: ------------------ In C:\work\ExampleTest.m (ExampleTest.testA) at 6'
未完了イベントの記録をすべて選択します。このイベントはアサーション エラーであるため、フレームワークはこの失敗の診断記録を failedRecords(2)
でも返します。
incompleteRecords = selectIncomplete(testA_records)
incompleteRecords = QualificationDiagnosticRecord with properties: Event: 'AssertionFailed' EventScope: TestMethod EventLocation: 'ExampleTest/testA' TestDiagnosticResults: [1×0 matlab.automation.diagnostics.DiagnosticResult] FrameworkDiagnosticResults: [1×1 matlab.automation.diagnostics.DiagnosticResult] AdditionalDiagnosticResults: [1×0 matlab.automation.diagnostics.DiagnosticResult] Stack: [1×1 struct] Report: 'Assertion failed in ExampleTest/testA and it did not run to completion...'
ログが作成されたイベントをもつ記録すべてを選択して、ログが作成されたメッセージを表示します。
loggedRecords = selectLogged(testA_records); {loggedRecords.Report}'
ans = 2×1 cell array {'[Terse] Diagnostic logged (2022-10-15 19:10:56): Terse log message' } {'[Detailed] Diagnostic logged (2022-10-15 19:10:56): Detailed log message'}
バージョン履歴
R2016a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)