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