selectLogged
Class: matlab.unittest.plugins.diagnosticrecord.DiagnosticRecord
Namespace: matlab.unittest.plugins.diagnosticrecord
Return diagnostic records for logged events
Syntax
selectedRecords = selectLogged(records)
Description
selectedRecords = selectLogged(
returns the
diagnostic records for logged events as an array of
records
)matlab.unittest.plugins.diagnosticrecord.LoggedDiagnosticRecord
instances. Logged events are calls to the log
method within the test.
Input Arguments
records
— Recorded diagnostics on test result
array of matlab.unittest.plugins.diagnosticrecord.DiagnosticRecord
instances
Recorded diagnostics on a test result, specified as an array
of matlab.unittest.plugins.diagnosticrecord.DiagnosticRecord
instances.
Access recorded diagnostics via the DiagnosticRecord
field
in the Details
property on TestResult
.
For example, if your test results are stored in the variable results
,
find the recorded diagnostics for the second test by invoking records
= result(2).Details.DiagnosticRecord
.
Examples
Select Diagnostics on Test Result
In your working folder, create a file, ExampleTest.m
, containing
the following test class. The intent of this test is to illustrate how to use the
DiagnosticsRecordingPlugin
class, and it is not intended to be a
representative unit test.
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
At the command prompt, create a test suite from the ExampleTest
class.
suite = testsuite('ExampleTest');
Create a test runner with no plugins. This code creates a silent runner and provides
you with complete control over the installed plugins. Add a
DiagnosticsRecordingPlugin
instance to the test runner.
import matlab.unittest.TestRunner import matlab.unittest.plugins.DiagnosticsRecordingPlugin runner = TestRunner.withNoPlugins; runner.addPlugin(DiagnosticsRecordingPlugin)
Run the tests.
results = runner.run(suite);
Display the result from the second test. The test fails and is incomplete.
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.
Index into the diagnostic record to display more information. The test throws an uncaught exception.
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...'
Collect the diagnostic records for the first test, testA
.
testA_records = results(1).Details.DiagnosticRecord
testA_records = 1×3 heterogeneous DiagnosticRecord (LoggedDiagnosticRecord, QualificationDiagnosticRecord) array with properties: Event EventScope EventLocation Stack Report
View the events that the plugin recorded for testA
. The plugin
records the message logged at a Terse
level of verbosity, and the
verification and assertion failures.
{testA_records.Event}'
ans = 3×1 cell array {'DiagnosticLogged' } {'VerificationFailed'} {'AssertionFailed' }
Create a plugin that records messages at all verbosity
levels and includes passing diagnostics. Rerun the tests and collect
the diagnostic records for testA
.
runner = TestRunner.withNoPlugins; runner.addPlugin(DiagnosticsRecordingPlugin( ... 'IncludingPassingDiagnostics',true,'OutputDetail',4,'LoggingLevel',4)) results = runner.run(suite); testA_records = results(1).Details.DiagnosticRecord;
View the events that the plugin recorded for testA
. The plugin
records diagnostic information for all the qualifications and calls to the
log
method.
{testA_records.Event}'
ans = 6×1 cell array {'DiagnosticLogged' } {'DiagnosticLogged' } {'VerificationPassed'} {'AssumptionPassed' } {'VerificationFailed'} {'AssertionFailed' }
Select all the records with failing event diagnostics.
failedRecords = selectFailed(testA_records)
failedRecords = 1×2 QualificationDiagnosticRecord array with properties: Event EventScope EventLocation TestDiagnosticResults FrameworkDiagnosticResults AdditionalDiagnosticResults Stack Report
Select all the records with passing event diagnostics and display the report for the first record.
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'
Select all the records for incomplete events. Since this event is an assertion
failure, the framework also returns this record with the failing diagnostics as
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...'
Select all the records with logged events and display the logged messages.
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'}
Version History
Introduced in R2016a
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.
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)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)