Main Content

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) には、1 つ以上の Name,Value ペア引数によって指定された追加オプションが含まれます。

入力引数

すべて展開する

プラグイン インスタンスがサポートする詳細レベル。0 ~ 4 の整数値、matlab.automation.Verbosity 列挙オブジェクト、事前定義された列挙メンバー名のいずれかに対応する string スカラーまたは文字ベクトルとして指定します。プラグインは、このレベル以下でログに記録される診断情報に対して動作します。整数値は matlab.automation.Verbosity 列挙のメンバーに対応します。

数値表現列挙型メンバー名詳細レベルの説明
0None

情報なし

1Terse

最小限の情報

2Concise

中程度の情報量

3Detailed

ある程度の補足的な情報

4Verbose

多くの補足的な情報

プラグインがテキスト出力を送る場所。OutputStream インスタンスとして指定します。既定では、プラグインは OutputStream のサブクラス ToStandardOutput をストリームとして使用します。

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

ログに記録される診断メッセージの説明。文字ベクトルまたは string スカラーとして指定します。この値は、ログに記録されるそれぞれの診断メッセージと一緒に出力されます。値が空の場合、テスト フレームワークは説明を表示しません。

詳細レベル 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 であり、テスト フレームワークはスタック情報を表示しません。NumStackFramesInf の場合、テスト フレームワークは表示可能なすべてのスタック フレームを表示します。

すべて展開する

作業フォルダーのファイル sampleLogTest.m に、関数ベースのテストを作成します。

function tests = sampleLogTest
tests = functiontests(localfunctions);

function svdTest(testCase)
import matlab.automation.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 (2022-10-15 18:35:02): About to call SVD.

[Terse] Diagnostic logged (2022-10-15 18:35:20): 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 (2022-10-15T18:36:05): Generating matrix.
   [Terse] Diagnostic logged (2022-10-15T18:36:05): About to call SVD.
   [Terse] Diagnostic logged (2022-10-15T18:36:05): 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,'Detailed','Starting Test')
            log(testCase,'Testing 5==5')
            testCase.verifyEqual(5,5)
            log(testCase,'Verbose','Test Complete')
        end
    end
end

コマンド プロンプトでテスト スイートと詳細レベル 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 (2022-10-15T18:45:43): Starting Test
 [Concise] Diagnostic logged (2022-10-15T18:45:43): Testing 5==4
 [Verbose] Diagnostic logged (2022-10-15T18:45:44): Test Complete
[Detailed] Diagnostic logged (2022-10-15T18:45:44): Starting Test
 [Concise] Diagnostic logged (2022-10-15T18:45:44): Testing 5==5
 [Verbose] Diagnostic logged (2022-10-15T18:45:44): Test Complete

ファイル myOutput.log に出力を行う新しいプラグインを作成し、テストを再度実行します。

import matlab.automation.streams.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 (2022-10-15T18:46:09): Starting Test
 [Concise] Diagnostic logged (2022-10-15T18:46:09): Testing 5==4
 [Verbose] Diagnostic logged (2022-10-15T18:46:09): Test Complete
[Detailed] Diagnostic logged (2022-10-15T18:46:09): Starting Test
 [Concise] Diagnostic logged (2022-10-15T18:46:09): Testing 5==5
 [Verbose] Diagnostic logged (2022-10-15T18:46:09): Test Complete

レベル 4 のメッセージを表示しない新しいプラグインを作成します。詳細レベルやタイムスタンプは表示しません。テストを再実行します。

runner = TestRunner.withNoPlugins;
p = LoggingPlugin.withVerbosity('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 で導入