Класс: matlab.unittest.plugins.diagnosticrecord.DiagnosticRecord
Пакет: matlab.unittest.plugins.diagnosticrecord
Возвратите диагностические записи для неполных событий
selectedRecords = selectIncomplete(records)
selectedRecords = selectIncomplete(
возвращает диагностические записи для неполных событий как массив records
)matlab.unittest.plugins.diagnosticrecord.QualificationDiagnosticRecord
и matlab.unittest.plugins.diagnosticrecord.ExceptionDiagnosticRecord
экземпляры.
Неполные события являются событиями, которые приводят к неполному тесту на 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.