matlab.unittest.plugins.

Класс: matlab.unittest.plugins.
Пакет: 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, объект перечисления matlab.unittest.Verbosity, или скаляр строки или вектор символов, соответствующий одному из предопределенных имен элемента перечисления. Плагин реагирует на диагностику, которая регистрируется на этом уровне и ниже. Целочисленные значения соответствуют участникам перечисления matlab.unittest.Verbosity.

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

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

1Terse

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

2Concise

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

3Detailed

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

4Verbose

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

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (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