matlab.unittest.plugins.DiagnosticsRecordingPlugin class

Пакет: matlab.unittest.plugins

Плагин для записи диагностики по результатам теста

Описание

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

Этот класс создает плагин для записи диагностики по результатам тестирования. The 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. По умолчанию плагин не записывает диагностику от прохождения тестов.

Типы данных: logical

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

Типы данных: logical

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

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

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

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

Отображение уровня для подробных данных события, возвращаемое как 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'}
Введенный в R2016a