Класс: matlab.unittest.plugins.diagnosticrecord.DiagnosticRecord
Пакет: matlab.unittest.plugins.diagnosticrecord
Возврат записей диагностики для переданных событий
selectedRecords = selectPassed(records)
selectedRecords = selectPassed(
возвращает диагностические записи для переданных событий как массив records
)matlab.unittest.plugins.diagnosticrecord.QualificationDiagnosticRecord
образцы.
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.diagnosticrecord.DiagnosticRecord
| matlab.unittest.plugins.diagnosticrecord.QualificationDiagnosticRecord
| matlab.unittest.plugins.DiagnosticsRecordingPlugin
| selectFailed
| selectIncomplete
| selectLogged
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.