В рабочей папке создайте файл, 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'}