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]
AdditionalDiagnosticResults: [1×0 matlab.unittest.diagnostics.DiagnosticResult]
Stack: [1×1 struct]
Report: 'Error occurred in ExampleTest/testB and it did not run to completion…'
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
AdditionalDiagnosticResults
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 Value:
5
Expected Value:
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]
AdditionalDiagnosticResults: [1×0 matlab.unittest.diagnostics.DiagnosticResult]
Stack: [1×1 struct]
Report: 'Assertion failed in ExampleTest/testA and it did not run to completion…'
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 (2018-04-12 13:15:23): Terse log message' }
{'[Detailed] Diagnostic logged (2018-04-12 13:15:23): Detailed log message'}