В рабочей папке создайте файл, ExampleTest.m
, содержащий следующий тестовый класс. Цель этого теста состоит в том, чтобы проиллюстрировать, как использовать DiagnosticsRecordingPlugin
плагин, и он не предназначен для демонстрационного модульного теста.
В командной строке создайте тестовый набор из ExampleTest
класс.
Создайте исполнителя тестов без плагинов. Этот код создает бесшумный раннер и предоставляет вам полный контроль над установленными плагинами. Добавление DiagnosticsRecordingPlugin
на исполнителя тестов.
Запустите тесты.
Отображение результатов второго теста. Тест завершается неуспешно и не завершен.
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.
Индексируйте в диагностическую запись, чтобы отобразить больше информации.
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 =
1×3 heterogeneous DiagnosticRecord (LoggedDiagnosticRecord, QualificationDiagnosticRecord) array with properties:
Event
EventScope
EventLocation
Stack
Report
Просмотрите события, для которых записан плагин testA
.
ans =
3×1 cell array
{'DiagnosticLogged' }
{'VerificationFailed'}
{'AssertionFailed' }
Плагин записывает сообщение, записанное в Terse
уровень подробностей, а также отказы в верификации и утверждении.
Создайте плагин, который записывает сообщения на всех уровнях подробностей и включает в себя передачу диагностики. Перезапустите тесты и соберите диагностические записи для testA
.
Просмотрите события, для которых записан плагин testA
.
ans =
6×1 cell array
{'DiagnosticLogged' }
{'DiagnosticLogged' }
{'VerificationPassed'}
{'AssumptionPassed' }
{'VerificationFailed'}
{'AssertionFailed' }
Плагин записывает диагностическую информацию для всех проверок и вызовов log
способ.
Выберите все записи с неудачной диагностикой событий.
failedRecords =
1×2 QualificationDiagnosticRecord array with properties:
Event
EventScope
EventLocation
TestDiagnosticResults
FrameworkDiagnosticResults
AdditionalDiagnosticResults
Stack
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 =
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)
.
Выберите все записи с записанными событиями и отобразите записанные сообщения.
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'}