Класс: matlab.unittest.plugins.diagnosticrecord.
Пакет: matlab.unittest.plugins.diagnosticrecord
Возвратите диагностические записи для неполных событий
selectedRecords = selectIncomplete(records)
selectedRecords = selectIncomplete( возвращает диагностические записи для неполных событий как массив экземпляров records)matlab.unittest.plugins.diagnosticrecord.ExceptionDiagnosticRecord и matlab.unittest.plugins.diagnosticrecord.QualificationDiagnosticRecord.
Неполные события являются событиями, которые приводят к неполному тесту на TestResult. Эти события включают отказы предположения, отказы утверждения и непойманные объекты MException.
records — Записанная диагностика на результате испытанийmatlab.unittest.plugins.diagnosticrecord.DiagnosticRecordЗаписанная диагностика на результате испытаний, заданном как массив экземпляров matlab.unittest.plugins.diagnosticrecord.DiagnosticRecord. Доступ к записанной диагностике через поле DiagnosticRecord в свойстве Details на TestResult. Например, если ваши результаты испытаний хранятся в переменной results, найдите записанную диагностику для второго теста путем вызова records = result(2).Details.DiagnosticRecord.
В вашей рабочей папке создайте файл, ExampleTest.m, содержа следующий тестовый класс. Намерение этого теста состоит в том, чтобы проиллюстрировать, как использовать плагин DiagnosticsRecordingPlugin, и это не предназначается, чтобы быть представительным модульным тестом.
classdef ExampleTest < matlab.unittest.TestCase methods (Test) function testA(testCase) testCase.log(1,'Terse log message') % logs testCase.log(3,'Detailed log message') % logs testCase.verifyEqual(3+2,5) % passes testCase.assumeTrue(true) % passes testCase.verifyGreaterThan(5, 9) % fails testCase.assertEqual(3.14,pi) % fails/incomplete end function testB(testCase) % This test contains an intentional error - passing a character % instead of a variable to the ones function. a = [1 2]; testCase.verifyEqual(ones('a'),[1 1]); % errors end end end
В командной строке создайте тестовый набор из класса ExampleTest.
suite = testsuite('ExampleTest');Создайте исполнителя тестов без плагинов. Этот код создает тихого бегуна и предоставляет вам полный контроль над установленными плагинами. Добавьте DiagnosticsRecordingPlugin в исполнителя тестов.
import matlab.unittest.TestRunner; import matlab.unittest.plugins.DiagnosticsRecordingPlugin; runner = TestRunner.withNoPlugins; runner.addPlugin(DiagnosticsRecordingPlugin);
Запущение тестов.
results = runner.run(suite);
Отобразите результат второго теста. Тестовые сбои и являются неполными.
results(2)
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.Индексируйте в диагностическую запись, чтобы отобразить больше информации.
results(2).Details.DiagnosticRecord
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 = results(1).Details.DiagnosticRecord
testA_records =
1×3 heterogeneous DiagnosticRecord (LoggedDiagnosticRecord, QualificationDiagnosticRecord) array with properties:
Event
EventScope
EventLocation
Stack
ReportПросмотрите события, которые плагин записал для testA.
{testA_records.Event}'ans =
3×1 cell array
{'DiagnosticLogged' }
{'VerificationFailed'}
{'AssertionFailed' }
Плагин записывает сообщение, регистрируемое на уровне Terse многословия, и отказах утверждения и верификации.
Создайте плагин, который записывает сообщения на всех уровнях многословия и включает передающую диагностику. Повторно выполните тесты и соберите диагностические записи для testA.
runner = TestRunner.withNoPlugins; runner.addPlugin(DiagnosticsRecordingPlugin(... 'IncludingPassingDiagnostics',true,'OutputDetail',4,'LoggingLevel',4)); results = runner.run(suite); testA_records = results(1).Details.DiagnosticRecord;
Просмотрите события, которые плагин записал для testA.
{testA_records.Event}'ans =
6×1 cell array
{'DiagnosticLogged' }
{'DiagnosticLogged' }
{'VerificationPassed'}
{'AssumptionPassed' }
{'VerificationFailed'}
{'AssertionFailed' }Плагин записывает диагностическую информацию для всех проверок и вызовов метода log.
Выберите все записи с провальной диагностикой события.
failedRecords = selectFailed(testA_records)
failedRecords =
1×2 QualificationDiagnosticRecord array with properties:
Event
EventScope
EventLocation
TestDiagnosticResults
FrameworkDiagnosticResults
AdditionalDiagnosticResults
Stack
ReportВыберите все записи с передающей диагностикой события и отобразите отчет для первой записи.
passedRecords = selectPassed(testA_records); passedRecords(1).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 = selectIncomplete(testA_records)
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).
Выберите все записи с регистрируемыми событиями и отобразите регистрируемые сообщения.
loggedRecords = selectLogged(testA_records);
{loggedRecords.Report}'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'}matlab.unittest.plugins.DiagnosticsRecordingPlugin | matlab.unittest.plugins.diagnosticrecord.DiagnosticRecord | matlab.unittest.plugins.diagnosticrecord.ExceptionDiagnosticRecord | matlab.unittest.plugins.diagnosticrecord.QualificationDiagnosticRecord | selectFailed | selectLogged | selectPassed
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.