このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
matlab.unittest.plugins.DiagnosticsRecordingPlugin クラス
パッケージ: matlab.unittest.plugins
テスト結果の診断を記録するプラグイン
説明
DiagnosticsRecordingPlugin
は、ユニット テストからの診断情報へのプログラムによるアクセスを可能にします。
このクラスはテスト結果の診断を記録するプラグインを作成します。TestRunner
は、診断を TestResult
オブジェクトの Details
プロパティの DiagnosticRecord
配列として記録します。DiagnosticRecord
配列の各要素は、個々のテストの 1 イベントに対応します。
関数 runtests
、入力なしの関数 testrunner
、TestSuite
または TestCase
の run
メソッドを使用してテストを実行する場合、テスト フレームワークは既定でこのプラグインを使用します。関数 runperf
または TimeExperiment
の run
メソッドを使用してパフォーマンス テストを実行した場合も、テスト フレームワークは既定でこのプラグインを使用します。
構築
matlab.unittest.plugins.DiagnosticsRecordingPlugin
は、テスト結果の診断を記録するプラグインを作成します。既定では、DiagnosticsRecordingPlugin
は検定エラーとログが作成されたイベントを記録します。
matlab.unittest.plugins.DiagnosticsRecordingPlugin(
は、1 つ以上の Name,Value
)Name,Value
のペア引数で指定された追加オプションをもつプラグインを作成します。Name
は一重引用符 (''
) の中になければなりません。Name1,Value1,...,NameN,ValueN
のように、複数の名前と値のペアの引数を任意の順番で指定できます。
入力引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name
を引用符で囲みます。
例: matlab.unittest.plugins.DiagnosticsRecordingPlugin('IncludingPassingDiagnostics',true)
は検定エラーとログが作成されたイベントの診断に加えて、パスの診断を記録するプラグインを作成します。
IncludingPassingDiagnostics
— パスしたテストの診断を記録するかどうかのインジケーター
false
(既定値) | true
パスしたテストの診断を記録するかどうか。false
または true
として指定します。既定では、プラグインはパスしたテストの診断を記録しません。
データ型: logical
LoggingLevel
— 記録する診断ログの最大レベル
1 (既定値) | 0 | 2 | 3 | 4 | matlab.unittest.Verbosity
列挙型
記録する診断ログの最大レベル。0 ~ 4 の整数値または matlab.unittest.Verbosity
列挙型オブジェクトとして指定します。このプラグインは、このレベル以下でログが作成された診断情報を記録します。整数値は matlab.unittest.Verbosity
列挙型のメンバーに対応します。
既定で、プラグインは matlab.unittest.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.unittest.Verbosity
列挙型
記録するイベントの詳細レベル。0 ~ 4 の整数値または matlab.unittest.Verbosity
列挙型オブジェクトとして指定します。整数値は matlab.unittest.Verbosity
列挙型のメンバーに対応します。
プラグインは、パスしたイベント、失敗したイベント、およびログに記録されたイベントを、OutputDetail
で指定された詳細レベルで記録します。既定で、プラグインはイベントを matlab.unittest.Verbosity.Detailed
レベル (レベル 3) で記録します。
数値表現 | 列挙型メンバー名 | 詳細レベルの説明 |
---|---|---|
0 | None | 情報なし |
1 | Terse | 最小限の情報 |
2 | Concise | 中程度の情報量 |
3 | Detailed | ある程度の補足的な情報 |
4 | Verbose | 多くの補足的な情報 |
プロパティ
IncludePassingDiagnostics
— パスしたイベントの診断を記録するかどうかのインジケーター
false
(既定値) | true
この プロパティ は読み取り専用です。
パスしたイベントの診断を記録するかどうかのインジケーター。false
または true
として返されます。このプロパティは既定で false
です。作成時にこれを true
として指定できます。
データ型: logical
LoggingLevel
— 診断ログの最大詳細レベル
matlab.unittest.Verbosity
列挙型オブジェクト
この プロパティ は読み取り専用です。
プラグインが記録する診断ログの最大詳細レベル。matlab.unittest.Verbosity
列挙型オブジェクトとして返されます。このプラグインは、このレベル以下でログが作成された診断情報を記録します。このプロパティの既定値は matlab.unittest.Verbosity.Terse
です。プラグインの作成時に異なるログ レベルを指定できます。
診断ログとは、log (TestCase)
メソッドまたは log (Fixture)
メソッドの呼び出しによってテスト フレームワークに送る診断です。
OutputDetail
— 表示するイベントの詳細レベル
matlab.unittest.Verbosity
列挙型オブジェクト
この プロパティ は読み取り専用です。
表示するイベントの詳細レベル。matlab.unittest.Verbosity
列挙型オブジェクトとして返されます。プラグインはパスしたイベント、失敗したイベント、およびログに記録されたイベントを、OutputDetail
で指定された詳細レベルで表示します。このプロパティの既定値は matlab.unittest.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: 7.8912e-04 Details: [1×1 struct] Totals: 0 Passed, 1 Failed, 1 Incomplete. 0.00078912 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.unittest.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
についてプラグインが記録したイベントを表示します。
{testA_records.Event}'
ans = 3×1 cell array {'DiagnosticLogged' } {'VerificationFailed'} {'AssertionFailed' }
このプラグインは詳細レベル Terse
でログが作成されたメッセージと、検証エラーおよびアサーション エラーを記録します。
すべての詳細レベルのメッセージを記録し、パスした診断を含めるプラグインを作成します。テストを再実行し、testA
の診断記録を収集します。
runner = TestRunner.withNoPlugins; runner.addPlugin(DiagnosticsRecordingPlugin(... 'IncludingPassingDiagnostics',true,'OutputDetail',4,'LoggingLevel',4)); results = runner.run(suite); testA_records = results(1).Details.DiagnosticRecord;
testA
についてプラグインが記録したイベントを表示します。
{testA_records.Event}'
ans = 6×1 cell array {'DiagnosticLogged' } {'DiagnosticLogged' } {'VerificationPassed'} {'AssumptionPassed' } {'VerificationFailed'} {'AssertionFailed' }
このプラグインは、すべての検定と log
メソッドの呼び出しに関する診断情報を記録します。
失敗したイベントの診断記録をすべて選択します。
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 values are equal using "isequaln". Actual Value: 5 Expected Value: 5 ------------------ Stack Information: ------------------ In C:\work\ExampleTest.m (ExampleTest.testA) at 6'
未完了イベントの記録をすべて選択します。
incompleteRecords = selectIncomplete(testA_records)
incompleteRecords = QualificationDiagnosticRecord with properties: Event: 'AssertionFailed' EventScope: TestMethod EventLocation: 'ExampleTest/testA' TestDiagnosticResults: [1×0 matlab.unittest.diagnostics.DiagnosticResult] FrameworkDiagnosticResults: [1×1 matlab.unittest.diagnostics.DiagnosticResult] AdditionalDiagnosticResults: [1×0 matlab.unittest.diagnostics.DiagnosticResult] Stack: [1×1 struct] Report: 'Assertion failed in ExampleTest/testA and it did not run to completion…'
このイベントはアサーション エラーであるため、フレームワークはこの失敗の診断記録を failedRecords(2)
でも返します。
ログが作成されたイベントをもつ記録すべてを選択して、ログが作成されたメッセージを表示します。
loggedRecords = selectLogged(testA_records); {loggedRecords.Report}'
ans = 2×1 cell array {'[Terse] Diagnostic logged (2018-04-12 13:15:23): Terse log message' } {'[Detailed] Diagnostic logged (2018-04-12 13:15:23): 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)