Пакет: matlab.unittest.plugins
Плагин, чтобы записать диагностику на результатах испытаний
DiagnosticsRecordingPlugin
включает программируемый доступ к диагностической информации от модульных тестов.
Этот класс создает плагин, чтобы записать диагностику на результатах испытаний. TestRunner
записывает эту диагностику как массивы DiagnosticRecord
в свойстве Details
объекта TestResult
. Каждый элемент массива DiagnosticRecord
соответствует событию в отдельном тесте.
Если при запуске тесты с функцией runtests
или методом run
TestSuite
или TestCase
, среда тестирования использует этот плагин по умолчанию. Кроме того, если вы запускаете тесты производительности с функцией runperf
или методом run
TimeExperiment
, среда тестирования использует этот плагин по умолчанию.
matlab.unittest.plugins. DiagnosticsRecordingPlugin
создает плагин, чтобы записать диагностику на результатах испытаний. По умолчанию DiagnosticsRecordingPlugin
записывает отказы проверки и регистрируемые события.
matlab.unittest.plugins. DiagnosticsRecordingPlugin (
создает плагин с дополнительными опциями, заданными одним или несколькими Имя, Значение
)Имя,
аргументы пары Значения
. Имя должно находиться внутри одинарных кавычек (' ').
Можно задать несколько аргументов в виде пар "имя-значение" в любом порядке как
Name1, Value1..., NameN, ValueN
.
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Имя
должно появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
matlab.unittest.plugins. DiagnosticsRecordingPlugin ('IncludingPassingDiagnostics', верный)
, создает плагин, который записывает передающую диагностику в дополнение к диагностике для провальных проверок и регистрируемых событий.'IncludingPassingDiagnostics'
Индикатор, чтобы записать диагностику от того, чтобы проходить тестыfalse
(значение по умолчанию) | true
Записать ли диагностику от того, чтобы проходить тесты, заданные как false
или true
. По умолчанию плагин не записывает диагностику от того, чтобы проходить тесты.
Типы данных: логический
'LoggingLevel'
— Максимальный уровень, в котором зарегистрирована регистрируемая диагностикаmatlab.unittest.Verbosity
Перечисление многословияМаксимальный уровень, в котором регистрируемая диагностика зарегистрирована сменным экземпляром, задал как целочисленное значение от 0 до 4, или как объект перечисления matlab.unittest.Verbosity
. Плагин записывает диагностику, которая регистрируется на этом уровне и ниже. Целочисленные значения соответствуют членам matlab.unittest.Verbosity
Перечисление многословия.
По умолчанию плагин записывает диагностику, регистрируемую на уровне matlab.unittest.Verbosity.Terse
(уровень 1). Чтобы исключить регистрируемую диагностику, задайте LoggingLevel
как Verbosity.None
(уровень 0).
Регистрируемая диагностика является диагностикой, которую вы предоставляете к среде тестирования вызов метода Fixture.log
или TestCase.log
.
Числовое представление | Имя элемента перечисления | Описание многословия |
---|---|---|
0 | 'none' | Никакая информация |
1 | Terse | Минимальная информация |
2 | Concise | Умеренный объем информации |
3 | Detailed | Некоторая дополнительная информация |
4 | Verbose | Большая дополнительная информация |
'OutputDetail'
— Уровень детализации для записанных событийmatlab.unittest.Verbosity
Перечисление многословияУровень детализации для записанных событий, заданных как целочисленное значение от 0 до 4, или как объект перечисления matlab.unittest.Verbosity
. Целочисленные значения соответствуют членам matlab.unittest.Verbosity
Перечисление многословия.
Сменная передача записей, сбой и регистрируемые события с суммой детали заданы OutputDetail
. По умолчанию плагин записывает события на уровне matlab.unittest.Verbosity.Detailed
(уровень 3).
Числовое представление | Имя элемента перечисления | Описание многословия |
---|---|---|
0 | 'none' | Никакая информация |
1 | Terse | Минимальная информация |
2 | Concise | Умеренный объем информации |
3 | Detailed | Некоторая дополнительная информация |
4 | Verbose | Большая дополнительная информация |
IncludePassingDiagnostics
Индикатор, если диагностика для передающих событий зарегистрированаfalse
(значение по умолчанию) | true
Это свойство доступно только для чтения.
Индикатор, если диагностика для передающих событий зарегистрирована, возвратился как false
или true
. Этим свойством является false
по умолчанию. Можно задать его как true
во время конструкции.
Типы данных: логический
LoggingLevel
— Максимальный уровень многословия для регистрируемой диагностикиmatlab.unittest.
Объект перечисления многословия
Это свойство доступно только для чтения.
Максимальный уровень многословия для регистрируемой диагностики, зарегистрированной плагином, возвращенным как объект перечисления matlab.unittest.Verbosity
. Плагин записывает диагностику, которая регистрируется на этом уровне и ниже. По умолчанию этим значением свойства является matlab.unittest.Verbosity.Terse
. Можно задать различный уровень журналирования во время сменной конструкции.
Регистрируемая диагностика является диагностикой, которую вы предоставляете к среде тестирования вызов метода Fixture.log
или TestCase.log
.
OutputDetail
— Отобразите уровень для деталей событияmatlab.unittest.
Объект перечисления многословия
Это свойство доступно только для чтения.
Отобразите уровень для деталей события, возвращенных как объект перечисления matlab.unittest.Verbosity
. Сменная передача отображений, сбой и регистрируемые события с суммой детали заданы OutputDetail
. По умолчанию этим значением свойства является matlab.unittest.Verbosity.Detailed
. Можно задать различную выходную деталь во время сменной конструкции.
Указатель. Чтобы узнать, как классы Handle влияют на операции копирования, см. раздел "Копирование объектов".
В вашей рабочей папке создайте файл, 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
| matlab.unittest.plugins. DiagnosticsOutputPlugin
| matlab.unittest.plugins. LoggingPlugin
| matlab.unittest.plugins.diagnosticrecord
| matlab.unittest.plugins.diagnosticrecord. DiagnosticRecord
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.