matlab.unittest.plugins.DiagnosticsRecordingPlugin class

Пакет: matlab.unittest.plugins

Плагин, чтобы записать диагностику на результатах испытаний

Описание

DiagnosticsRecordingPlugin включает программируемый доступ к диагностической информации от модульных тестов.

Этот класс создает плагин, чтобы записать диагностику на результатах испытаний. TestRunner записи эта диагностика как DiagnosticRecord массивы в Details свойство TestResult объект. Каждый элемент DiagnosticRecord массив соответствует событию в отдельном тесте.

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

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

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

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

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

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

Числовое представлениеИмя элемента перечисленияОписание многословия
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. Можно задать различный уровень логгирования во время сменной конструкции.

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

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

Отобразите уровень для деталей события, возвращенных как 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