selectFailed
クラス: matlab.unittest.plugins.diagnosticrecord.DiagnosticRecord
名前空間: matlab.unittest.plugins.diagnosticrecord
失敗したイベントの診断記録を返す
構文
selectedRecords = selectFailed(records)
説明
selectedRecords = selectFailed( は失敗したイベントの診断記録を records)matlab.unittest.plugins.diagnosticrecord.QualificationDiagnosticRecord インスタンスおよび matlab.unittest.plugins.diagnosticrecord.ExceptionDiagnosticRecord インスタンスからなる配列として返します。
失敗したイベントとは TestResult でエラーの原因になったイベントです。これらのイベントには、検証エラー、アサーション エラー、キャッチされなかった MException オブジェクトが含まれます。
入力引数
テスト結果の診断記録。matlab.unittest.plugins.diagnosticrecord.DiagnosticRecord インスタンスの配列として指定します。TestResult の Details プロパティの DiagnosticRecord フィールドを介して診断記録にアクセスします。たとえば、テスト結果が変数 results に格納されている場合、2 番目のテストの診断記録を検索するには records = result(2).Details.DiagnosticRecord を呼び出します。
例
現在のフォルダー内の ExampleTest.m という名前のファイルで、ExampleTest テスト クラスを作成します。このクラスの Test メソッドは、説明をわかりやすくすることを意図した内容になっています。testOne メソッドには、Terse レベルおよび Detailed レベルでログに記録される診断とパスおよび失敗する検定が含まれています。testTwo メソッドには意図的なバグがあり、テストにおいて変数ではなく文字を ones 関数に渡しています。
classdef ExampleTest < matlab.unittest.TestCase methods (Test) function testOne(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 testTwo(testCase) a = [1 2]; testCase.verifyEqual(ones('a'),[1 1]) % errors end end end
DiagnosticsRecordingPlugin クラスをインポートします。
import matlab.unittest.plugins.DiagnosticsRecordingPluginテスト クラスからテスト スイートを作成します。
suite = testsuite("ExampleTest");テスト ランナーを作成し、DiagnosticsRecordingPlugin インスタンスを使用して構成します。次に、テストを実行します。テスト結果の診断がプラグインで記録されます。
runner = testrunner("minimal");
plugin = DiagnosticsRecordingPlugin;
runner.addPlugin(plugin)
results = runner.run(suite);2 番目のテストの結果を表示します。テスト コードに意図的なエラーがあるため、テストは失敗して未完了のままになります。
results(2)
ans =
TestResult with properties:
Name: 'ExampleTest/testTwo'
Passed: 0
Failed: 1
Incomplete: 1
Duration: 8.0680e-04
Details: [1×1 struct]
Totals:
0 Passed, 1 Failed (rerun), 1 Incomplete.
0.0008068 seconds testing time.TestResult オブジェクトの Details プロパティの DiagnosticRecord フィールドを使用して、2 番目のテストについての記録された診断にアクセスします。記録には、キャッチされないエラーがテストでスローされたことが示されています。
results(2).Details.DiagnosticRecord
ans =
ExceptionDiagnosticRecord with properties:
Event: 'ExceptionThrown'
EventScope: TestMethod
EventLocation: 'ExampleTest/testTwo'
Exception: [1×1 MException]
AdditionalDiagnosticResults: [1×0 matlab.automation.diagnostics.DiagnosticResult]
Stack: [1×1 struct]
Report: 'Error occurred in ExampleTest/testTwo and it did not run to completion.↵ ...'
testOne についてプラグインが記録したイベントを表示します。既定では、DiagnosticsRecordingPlugin インスタンスは、失敗したイベントと matlab.automation.Verbosity.Terse レベルでログに記録されたイベントの診断のみを記録します。
testOneRecords = results(1).Details.DiagnosticRecord;
{testOneRecords.Event}'ans =
3×1 cell array
{'DiagnosticLogged' }
{'VerificationFailed'}
{'AssertionFailed' }次に、matlab.automation.Verbosity.Detailed レベルですべてのイベント (つまり、パスしたイベント、失敗したイベント、およびいずれかのレベルでログに記録されたイベント) の詳細を記録するプラグインを使用してテストを実行します。
runner = testrunner("minimal"); plugin = DiagnosticsRecordingPlugin( ... IncludingPassingDiagnostics=true, ... LoggingLevel="Verbose", ... OutputDetail="Detailed"); runner.addPlugin(plugin) results = runner.run(suite);
testOne についてプラグインが記録したイベントを表示します。すべての検定と log メソッドの呼び出しについての診断情報がプラグインで記録されています。
testOneRecords = results(1).Details.DiagnosticRecord;
{testOneRecords.Event}'ans =
6×1 cell array
{'DiagnosticLogged' }
{'DiagnosticLogged' }
{'VerificationPassed'}
{'AssumptionPassed' }
{'VerificationFailed'}
{'AssertionFailed' }testOne の失敗したイベントについての診断記録を返します。
failedRecords = selectFailed(testOneRecords)
failedRecords =
1×2 QualificationDiagnosticRecord array with properties:
Event
EventScope
EventLocation
TestDiagnosticResults
FrameworkDiagnosticResults
AdditionalDiagnosticResults
Stack
Reportパスしたイベントについての記録を返し、最初の記録のレポートを表示します。
passedRecords = selectPassed(testOneRecords); passedRecords(1).Report
ans =
'Verification passed in ExampleTest/testOne.
---------------------
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.testOne) at 6'
testOne のすべての未完了イベントについての記録を返します。テストの未完了イベントはアサーション エラーによるものであるため、テスト フレームワークにおいて、この記録は失敗したイベントの記録 (failedRecords(2)) の一部としても含まれます。
incompleteRecords = selectIncomplete(testOneRecords)
incompleteRecords =
QualificationDiagnosticRecord with properties:
Event: 'AssertionFailed'
EventScope: TestMethod
EventLocation: 'ExampleTest/testOne'
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/testOne and it did not run to completion.↵ ...'
ログに記録されたイベントの記録を返し、ログに記録されたメッセージを表示します。
loggedRecords = selectLogged(testOneRecords);
{loggedRecords.Report}'ans =
2×1 cell array
{'[Terse] Diagnostic logged (2024-08-21 17:00:01): Terse log message' }
{'[Detailed] Diagnostic logged (2024-08-21 17:00:01): Detailed log message'}バージョン履歴
R2016a で導入
参考
matlab.unittest.plugins.DiagnosticsRecordingPlugin | matlab.unittest.plugins.diagnosticrecord.DiagnosticRecord | matlab.unittest.plugins.diagnosticrecord.QualificationDiagnosticRecord | matlab.unittest.plugins.diagnosticrecord.ExceptionDiagnosticRecord | selectPassed | selectIncomplete | selectLogged
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)