exponenta event banner

matlab.unittest.plugins. LoggingPlugin.withVerbosity

Класс: matlab.unittest.plugins.LoggingPlugin
Пакет: matlab.unittest.plugins

Создание подключаемого модуля LoggingPlugin для сообщений указанной детализации

Синтаксис

matlab.unittest.plugins.LoggingPlugin.withVerbosity(v)
matlab.unittest.plugins.LoggingPlugin.withVerbosity(v,stream)
matlab.unittest.plugins.LoggingPlugin.withVerbosity(v,Name,Value)

Описание

matlab.unittest.plugins.LoggingPlugin.withVerbosity(v) создает LoggingPlugin для сообщений указанной многословности.

matlab.unittest.plugins.LoggingPlugin.withVerbosity(v,stream) перенаправляет вывод текста в выходной поток.

matlab.unittest.plugins.LoggingPlugin.withVerbosity(v,Name,Value) включает дополнительные параметры, указанные одним или несколькими Name,Value аргументы пары.

Входные аргументы

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

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

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

Нет информации

1Terse

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

2Concise

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

3Detailed

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

4Verbose

Много дополнительной информации

Расположение, в котором плагин направляет вывод текста, указанное как OutputStream экземпляр. По умолчанию плагин использует OutputStream подкласс ToStandardOutput в качестве потока.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Описание диагностического сообщения в журнале, указанное как вектор символа или скаляр строки. Это значение печатается вместе с каждым зарегистрированным диагностическим сообщением. Если значение пустое, тестовый фреймворк не отображает описание.

Индикатор для отображения сообщений, зарегистрированных на уровнях ниже уровня детализации, v, указано как false или true (logical(0) или logical(1)). По умолчанию используется значение false и плагин реагирует на все сообщения, зарегистрированные на уровне v или ниже. Если значение равно true, плагин реагирует только на сообщения, зарегистрированные на уровне v.

Индикатор для отображения уровня детализации рядом с каждой зарегистрированной диагностикой, указанный как false или true (logical(0) или logical(1)). По умолчанию используется значение false и тестовый фреймворк отображает уровень детализации.

Индикатор для отображения временной метки, начиная с которой платформа тестирования генерирует зарегистрированное сообщение вместе с каждой зарегистрированной диагностикой, указанной как false или true (logical(0) или logical(1)). По умолчанию используется значение false и тестовый фреймворк отображает временную метку.

Количество кадров стека, отображаемых после каждого зарегистрированного диагностического сообщения, указанного как целое значение. По умолчанию используется значение 0и тестовая инфраструктура не отображает информацию стека. Если NumStackFrames является Inf, тестовый фреймворк отображает все доступные кадры стека.

Примеры

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

Создайте функциональный тест в файле, sampleLogTest.m, в рабочей папке.

function tests = sampleLogTest
tests = functiontests(localfunctions);

function svdTest(testCase)
import matlab.unittest.Verbosity

log(testCase,'Generating matrix.');
m = rand(1000);

log(testCase,1,'About to call SVD.');
[U,S,V] = svd(m);

log(testCase,Verbosity.Terse,'SVD finished.');

verifyEqual(testCase,U*S*V',m,'AbsTol',1e-6)

В командной строке запустите тест.

results = run(sampleLogTest);
Running sampleLogTest
   [Terse] Diagnostic logged (2014-04-14T14:20:59): About to call SVD.
   [Terse] Diagnostic logged (2014-04-14T14:20:59): SVD finished.
.
Done sampleLogTest
__________

Питатель по умолчанию сообщает о диагностике на уровне 1 (Terse).

Создайте тестовый питатель, чтобы сообщить о диагностике на уровнях 1 и 2, и повторно запустите тест.

import matlab.unittest.TestRunner
import matlab.unittest.plugins.LoggingPlugin

runner = TestRunner.withNoPlugins;
p = LoggingPlugin.withVerbosity(2);
runner.addPlugin(p);

results = runner.run(sampleLogTest);
 [Concise] Diagnostic logged (2014-04-14T14:28:14): Generating matrix.
   [Terse] Diagnostic logged (2014-04-14T14:28:14): About to call SVD.
   [Terse] Diagnostic logged (2014-04-14T14:28:15): SVD finished.

Создайте следующий класс В файле в текущей рабочей папке, ExampleLogTest.m.

classdef ExampleLogTest < matlab.unittest.TestCase
    methods(Test)
        function testOne(testCase)  % Test fails
            log(testCase,3,'Starting Test')
            log(testCase,'Testing 5==4')
            testCase.verifyEqual(5,4)
            log(testCase,4,'Test Complete')
        end
        function testTwo(testCase)  % Test passes
            log(testCase,matlab.unittest.Verbosity.Detailed,'Starting Test')
            log(testCase,'Testing 5==5')
            testCase.verifyEqual(5,5)
            log(testCase,matlab.unittest.Verbosity.Verbose,'Test Complete')
        end
    end
end

Сообщения журнала в testTwo использование Verbosity перечисления вместо соответствующих целых чисел.

В командной строке создайте набор тестов и питатель на уровне детализации 4, а затем запустите тест.

import matlab.unittest.TestSuite
import matlab.unittest.TestRunner
import matlab.unittest.plugins.LoggingPlugin
suite   = TestSuite.fromClass(?ExampleLogTest);

runner = TestRunner.withNoPlugins;
p = LoggingPlugin.withVerbosity(4);
runner.addPlugin(p);

results = runner.run(suite);
[Detailed] Diagnostic logged (2014-04-14T15:24:03): Starting Test
 [Concise] Diagnostic logged (2014-04-14T15:24:03): Testing 5==4
 [Verbose] Diagnostic logged (2014-04-14T15:24:03): Test Complete
[Detailed] Diagnostic logged (2014-04-14T15:24:03): Starting Test
 [Concise] Diagnostic logged (2014-04-14T15:24:03): Testing 5==5
 [Verbose] Diagnostic logged (2014-04-14T15:24:03): Test Complete

Создайте новый подключаемый модуль, чтобы направить выходные данные в файл. myOutput.logи повторно запустите тесты.

import matlab.unittest.plugins.ToFile
outFile = 'myOutput.log';

runner = TestRunner.withNoPlugins;
p = LoggingPlugin.withVerbosity(4,ToFile(outFile));
runner.addPlugin(p);

results = runner.run(suite);

Просмотрите содержимое файла, созданного плагином.

disp(fileread(outFile))
[Detailed] Diagnostic logged (2014-04-14T15:27:44): Starting Test
 [Concise] Diagnostic logged (2014-04-14T15:27:44): Testing 5==4
 [Verbose] Diagnostic logged (2014-04-14T15:27:44): Test Complete
[Detailed] Diagnostic logged (2014-04-14T15:27:44): Starting Test
 [Concise] Diagnostic logged (2014-04-14T15:27:44): Testing 5==5
 [Verbose] Diagnostic logged (2014-04-14T15:27:44): Test Complete

Создайте новый подключаемый модуль, который не отображает сообщения уровня 4. Не отображать уровень детализации или временную метку. Повторите тесты.

runner = TestRunner.withNoPlugins;
p = LoggingPlugin.withVerbosity(matlab.unittest.Verbosity.Detailed,...
    'HideLevel',true,'HideTimestamp',true);
runner.addPlugin(p);

results = runner.run(suite);
Diagnostic logged: Starting Test
Diagnostic logged: Testing 5==4
Diagnostic logged: Starting Test
Diagnostic logged: Testing 5==5
Представлен в R2014b