Пакет: 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
парные аргументы. Name
должен появиться в одинарных кавычках (''
). Можно задать несколько аргументов пары "имя-значение" в любом порядке как Name1,Value1,...,NameN,ValueN
.
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. 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).
Регистрируемая диагностика является диагностикой, которую вы предоставляете к среде тестирования вызов log
или 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
. Можно задать различный уровень логгирования во время сменной конструкции.
Регистрируемая диагностика является диагностикой, которую вы предоставляете к среде тестирования вызов log
или 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.