Пакет: 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(
создает плагин с дополнительными опциями, заданными одним или несколькими аргументами пары Name,Value
)Name,Value
. Имя должно находиться внутри одинарных кавычек (' ').
Можно задать несколько аргументов пары "имя-значение" в любом порядке как
Name1,Value1,...,NameN,ValueN
.
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
matlab.unittest.plugins.DiagnosticsRecordingPlugin('IncludingPassingDiagnostics',true)
создает плагин, который записывает передающую диагностику в дополнение к диагностике для провальных проверок и регистрируемых событий.'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.Verbosity
Это свойство доступно только для чтения.
Максимальный уровень многословия для регистрируемой диагностики, зарегистрированной плагином, возвращенным как объект перечисления matlab.unittest.Verbosity
. Плагин записывает диагностику, которая регистрируется на этом уровне и ниже. По умолчанию этим значением свойства является matlab.unittest.Verbosity.Terse
. Можно задать различный уровень журналирования во время сменной конструкции.
Регистрируемая диагностика является диагностикой, которую вы предоставляете к среде тестирования вызов метода Fixture.log
или TestCase.log
.
OutputDetail
— Отобразите уровень для деталей событияmatlab.unittest.Verbosity
Это свойство доступно только для чтения.
Отобразите уровень для деталей события, возвращенных как объект перечисления 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.