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
plugin,
and it is not intended to be a representative unit test.
At the command prompt, create a test suite from the ExampleTest
class.
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
to the test
runner.
Run the tests.
Display the result from the second test. The test fails
and is incomplete.
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.
Index into the diagnostic record to display more information.
ans =
ExceptionDiagnosticRecord with properties:
Event: 'ExceptionThrown'
EventScope: TestMethod
EventLocation: 'ExampleTest/testB'
Exception: [1×1 MException]
Stack: [1×1 struct]
Report: '============================================================================…'
The test throws an uncaught exception.
Collect the diagnostic records for the first test, testA
.
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
.
ans =
3×1 cell array
'DiagnosticLogged'
'VerificationFailed'
'AssertionFailed'
The plugin records the message logged at a Terse
level
of verbosity, and the verification and assertion failures.
Create a plugin that records messages at all verbosity
levels and includes passing diagnostics. Rerun the tests and collect
the diagnostic records for testA
.
View the events that the plugin recorded for testA
.
ans =
6×1 cell array
'DiagnosticLogged'
'DiagnosticLogged'
'VerificationPassed'
'AssumptionPassed'
'VerificationFailed'
'AssertionFailed'
The plugin records diagnostic information for all the qualifications
and calls to the log
method.
Select all the records with failing event diagnostics.
failedRecords =
1×2 QualificationDiagnosticRecord array with properties:
Event
EventScope
EventLocation
TestDiagnosticResults
FrameworkDiagnosticResults
Stack
Report
Select all the records with passing event diagnostics
and display the report for the first record.
ans =
'================================================================================
Verification passed in ExampleTest/testA.
---------------------
Framework Diagnostic:
---------------------
verifyEqual passed.
--> The values are equal using "isequaln".
Actual double:
5
Expected double:
5
------------------
Stack Information:
------------------
In C:\work\ExampleTest.m (ExampleTest.testA) at 6
================================================================================'
Select all the records for incomplete events.
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]
Stack: [1×1 struct]
Report: '===============================================================================…'
Since this event is an assertion failure, the framework also
returns this record with the failing diagnostics as failedRecords(2)
.
Select all the records with logged events and display
the logged messages.
ans =
2×1 cell array
' [Terse] Diagnostic logged (2016-12-12T12:28:07): Terse log message'
'[Detailed] Diagnostic logged (2016-12-12T12:28:07): Detailed log message'