matlab.unittest.plugins. Класс DiagnosticsRecordingPlugin

Пакет: 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) создает плагин, который записывает передающую диагностику в дополнение к диагностике для провальных проверок и регистрируемых событий.

Записать ли диагностику от того, чтобы проходить тесты, заданные как false или true. По умолчанию плагин не записывает диагностику от того, чтобы проходить тесты.

Типы данных: логический

Максимальный уровень, в котором регистрируемая диагностика зарегистрирована сменным экземпляром, задал как целочисленное значение от 0 до 4, или как объект перечисления matlab.unittest.Verbosity. Плагин записывает диагностику, которая регистрируется на этом уровне и ниже. Целочисленные значения соответствуют участникам перечисления matlab.unittest.Verbosity.

По умолчанию плагин записывает диагностику, регистрируемую на уровне matlab.unittest.Verbosity.Terse (уровень 1). Чтобы исключить регистрируемую диагностику, задайте LoggingLevel как Verbosity.None (уровень 0).

Регистрируемая диагностика является диагностикой, которую вы предоставляете к среде тестирования вызов метода Fixture.log или TestCase.log.

Числовое представлениеИмя элемента перечисленияОписание многословия
0None

Никакая информация

1Terse

Минимальная информация

2Concise

Умеренный объем информации

3Detailed

Некоторая дополнительная информация

4Verbose

Большая дополнительная информация

Уровень детализации для записанных событий, заданных как целочисленное значение от 0 до 4, или как объект перечисления matlab.unittest.Verbosity. Целочисленные значения соответствуют участникам перечисления matlab.unittest.Verbosity.

Сменная передача записей, сбой и регистрируемые события с суммой детали заданы OutputDetail. По умолчанию плагин записывает события на уровне matlab.unittest.Verbosity.Detailed (уровень 3).

Числовое представлениеИмя элемента перечисленияОписание многословия
0None

Никакая информация

1Terse

Минимальная информация

2Concise

Умеренный объем информации

3Detailed

Некоторая дополнительная информация

4Verbose

Большая дополнительная информация

Свойства

развернуть все

Это свойство доступно только для чтения.

Индикатор, если диагностика для передающих событий зарегистрирована, возвратился как false или true. Этим свойством является false по умолчанию. Можно задать его как true во время конструкции.

Типы данных: логический

Это свойство доступно только для чтения.

Максимальный уровень многословия для регистрируемой диагностики, зарегистрированной плагином, возвращенным как объект перечисления matlab.unittest.Verbosity. Плагин записывает диагностику, которая регистрируется на этом уровне и ниже. По умолчанию этим значением свойства является matlab.unittest.Verbosity.Terse. Можно задать различный уровень журналирования во время сменной конструкции.

Регистрируемая диагностика является диагностикой, которую вы предоставляете к среде тестирования вызов метода Fixture.log или TestCase.log.

Это свойство доступно только для чтения.

Отобразите уровень для деталей события, возвращенных как объект перечисления matlab.unittest.Verbosity. Сменная передача отображений, сбой и регистрируемые события с суммой детали заданы OutputDetail. По умолчанию этим значением свойства является matlab.unittest.Verbosity.Detailed. Можно задать различную выходную деталь во время сменной конструкции.

Примеры

свернуть все

В вашей рабочей папке создайте файл, 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'}

Введенный в R2016a