メインコンテンツ

matlab.unittest.plugins.TestReportPlugin.producingDOCX

クラス: matlab.unittest.plugins.TestReportPlugin
名前空間: matlab.unittest.plugins

DOCX テスト レポートを生成するプラグインを作成する

説明

plugin = matlab.unittest.plugins.TestReportPlugin.producingDOCX はテスト結果の DOCX レポートを一時フォルダーに生成するプラグインを作成します。この構文は plugin = matlab.unittest.plugins.TestReportPlugin.producingDOCX([tempname '.docx']) と等価です。

plugin = matlab.unittest.plugins.TestReportPlugin.producingDOCX(filename) は指定したファイル名を使用してレポートを保存します。

plugin = matlab.unittest.plugins.TestReportPlugin.producingDOCX(___,Name,Value) は、前述の構文の入力引数の任意の組み合わせに加え、1 つ以上の名前と値の引数を使用してオプションを指定します。たとえば、plugin = matlab.unittest.plugins.TestReportPlugin.producingDOCX("LoggingLevel","detailed") は、"detailed" 以下のレベルでログに記録された診断情報を含むテスト レポートを生成するプラグインを作成します。

入力引数

すべて展開する

テスト レポート ファイルの名前。.docx で終わる string スカラーまたは文字ベクトルとして指定します。値は現在のフォルダーに対する相対パスまたは絶対パスのいずれかになります。

例: "myTestReport.docx"

例: "C:\work\myTestReport.docx"

名前と値の引数

すべて展開する

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

例: plugin = matlab.unittest.plugins.TestReportPlugin.producingDOCX(LoggingLevel="detailed")

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

例: plugin = matlab.unittest.plugins.TestReportPlugin.producingDOCX("LoggingLevel","detailed")

レポートの向き。"portrait" または "landscape" として指定します。既定では、プラグインは縦方向のレポートを生成します。

テスト レポートのタイトル。string スカラーまたは文字ベクトルとして指定します。既定では、プラグインは "MATLAB® Test Report" をタイトルとして使用します。

例: Title="My Test Report"

コマンド ウィンドウからのテキスト出力を含めるかどうか。数値または logical 0 (false) または 1 (true) として指定します。既定では、プラグインはコマンド ウィンドウからのテキスト出力をテスト レポートに含めません。

パスしたイベントの診断情報を含めるかどうか。数値または logical 0 (false) または 1 (true) として指定します。既定では、プラグインはパスしたイベントの診断情報をテスト レポートに含めません。

テスト レポートに含める診断ログの最大詳細レベル。0 から 4 までの整数スカラー、matlab.automation.Verbosity 列挙オブジェクト、または列挙のテキスト表現として指定します。プラグインは、指定されたレベル以下でログに記録された診断を含めます。

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

情報なし

1Terse

最小限の情報

2Concise

中程度の情報量

3Detailed

ある程度の補足的な情報

4Verbose

多くの補足的な情報

既定では、プラグインは matlab.automation.Verbosity.Terse レベル (レベル 1) でログに記録された診断を含めます。診断ログを除外するには、LoggingLevelmatlab.automation.Verbosity.None (レベル 0) に指定します。

診断ログとは、log (TestCase) メソッドおよび log (Fixture) メソッドによってテスト フレームワークに送る診断です。

例: "LoggingLevel","detailed"

すべて展開する

2 つのテスト ファイルからテスト スイートを作成し、スイートを実行して、結果の .docx レポートを生成します。

ScriptBasedTest.m という名前の作業フォルダーに、以下のテスト スクリプトを含む新しいファイルを作成します。スクリプトには 2 つの失敗する未完了のテストが含まれます。

%% Test double class
expSolution = 'double';
actSolution = ones;
assert(isa(actSolution,expSolution))

%% Test single class
expSolution = 'single';
actSolution = ones('single');
assert(isa(actSolution,expSolution))

%% Test uint16 class
expSolution = 'uint16';
actSolution = ones('uint16');
assert(isa(actSolution,expSolution))

%% Test that fails
assert(false==true);

%% Another test that fails
assert(strcmp('correlation','causation'))

以下のテスト クラスを含む ClassBasedTest.m という名前のファイルを作成します。

classdef ClassBasedTest < matlab.unittest.TestCase
    properties (ClassSetupParameter)
        generator = {'twister','combRecursive','multFibonacci'};
    end
    properties (MethodSetupParameter)
        seed = {0,123,4294967295};
    end
    properties (TestParameter)
        dim1 = struct('small',1,'medium',2,'large',3);
        dim2 = struct('small',2,'medium',3,'large',4);
        dim3 = struct('small',3,'medium',4,'large',5);
        type = {'single','double'};
    end
    methods (TestClassSetup)
        function ClassSetup(testCase,generator)
            orig = rng;
            testCase.addTeardown(@rng,orig)
            rng(0, generator)
        end
    end
    methods (TestMethodSetup)
        function MethodSetup(testCase,seed)
            orig = rng;
            testCase.addTeardown(@rng,orig)
            rng(seed)
        end
    end
    methods (Test, ParameterCombination='sequential')
        function testSize(testCase,dim1,dim2,dim3)
            testCase.verifySize(rand(dim1,dim2,dim3),[dim1 dim2 dim3])
        end 
    end
    methods (Test, ParameterCombination='pairwise')
        function testRepeatable(testCase,dim1,dim2,dim3)
            state = rng;
            firstRun = rand(dim1,dim2,dim3);
            rng(state)
            secondRun = rand(dim1,dim2,dim3);
            testCase.verifyEqual(firstRun,secondRun);
        end
    end
    methods (Test)
        function testClass(testCase,dim1,dim2,type)
            testCase.verifyClass(rand(dim1,dim2,type),type)
        end
    end
end

コマンド プロンプトで、両方のテスト ファイルからテスト スイートを作成します。

import matlab.unittest.TestRunner;
import matlab.unittest.TestSuite;
import matlab.unittest.plugins.TestReportPlugin;

suite = testsuite({'ScriptBasedTest','ClassBasedTest'})
suite = 

  1×284 Test array with properties:

    Name
    ProcedureName
    TestClass
    BaseFolder
    Parameterization
    SharedTestFixtures
    Tags

Tests Include:
   17 Unique Parameterizations, 0 Shared Test Fixture Classes, 0 Tags.

サイレント テスト ランナーを作成し、コマンド ウィンドウに情報が出力されないようにします。出力を MyTestReport.docx ファイルに送信する TestReportPlugin を作成します。

runner = TestRunner.withNoPlugins;
docxFile = 'MyTestReport.docx';
plugin = TestReportPlugin.producingDOCX(docxFile);

プラグインを TestRunner に追加して、スイートを実行します。

runner.addPlugin(plugin);
result = runner.run(suite)
Generating report. Please wait.
    Preparing content for the report.
    Adding content to the report.
    Writing report to file.
Report has been saved to: C:\work\MyTestReport.docx

result = 

  1×284 TestResult array with properties:

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

Totals:
   282 Passed, 2 Failed, 2 Incomplete.
   0.73477 seconds testing time.

テスト レポートを開きます。

open(docxFile)

関数ベースのテストからテスト スイートを作成し、スイートを実行して、結果のレポートを生成します。パスした診断情報とコマンド ウィンドウへのテキスト出力を含めます。

FunctionBasedTest.m という名前の作業フォルダーに、以下の関数ベースのテストを含む新しいファイルを作成します。テスト ファイルには 2 つの失敗するテストが含まれます。

%% Main function to generate tests
function tests = FunctionBasedTest
tests = functiontests(localfunctions);
end

%% Test Functions
function passingTest(testCase)
actSolution = 13*3+7*5;
expSolution = 74;
verifyEqual(testCase,actSolution,expSolution)
end

function failingTest(testCase)
actSolution = single(1);
verifyTrue(testCase,actSolution)
end

function anotherPassingTest(testCase)
verifyClass(testCase,string('some text'),'string')
end

function anotherFailingTest(testCase)
verifyTrue(testCase,strcmp('42','everything'))
end

コマンド プロンプトで、FunctionBasedTest.m からテスト スイートを作成します。既定のプラグインを使用して、出力をコマンド ウィンドウに表示するテスト ランナーを作成します。

import matlab.unittest.TestRunner;
import matlab.unittest.TestSuite;
import matlab.unittest.plugins.TestReportPlugin;

suite = testsuite('FunctionBasedTest');
runner = TestRunner.withTextOutput;

出力を MyTestReport2.docx ファイルに送信する TestReportPlugin を作成します。パスした診断情報とコマンド ウィンドウのテキスト出力をレポートに含めます。

docxFile = 'MyTestReport2.docx';
plugin = TestReportPlugin.producingDOCX(docxFile,...
    'IncludingPassingDiagnostics',true,'IncludingCommandWindowText',true);

プラグインを TestRunner に追加して、スイートを実行します。

runner.addPlugin(plugin);
result = runner.run(suite);
Running FunctionBasedTest
.
================================================================================
Verification failed in FunctionBasedTest/failingTest.

    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyTrue failed.
    --> The value must be logical. It is of type "single".
    
    Actual single:
             1

    ------------------
    Stack Information:
    ------------------
    In C:\Work\FunctionBasedTest.m (failingTest) at 15
================================================================================
..
================================================================================
Verification failed in FunctionBasedTest/anotherFailingTest.

    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyTrue failed.
    --> The value must evaluate to "true".
    
    Actual logical:
           0

    ------------------
    Stack Information:
    ------------------
    In C:\Work\FunctionBasedTest.m (anotherFailingTest) at 23
================================================================================
.
Done FunctionBasedTest
__________

Failure Summary:

     Name                                  Failed  Incomplete  Reason(s)
    ===================================================================================
     FunctionBasedTest/failingTest           X                 Failed by verification.
    -----------------------------------------------------------------------------------
     FunctionBasedTest/anotherFailingTest    X                 Failed by verification.
    
Generating report. Please wait.
    Preparing content for the report.
    Adding content to the report.
    Writing report to file.
Report has been saved to: C:\Work\MyTestReport2.docx

テスト レポートを開きます。

open(docxFile)

バージョン履歴

R2016b で導入

すべて展開する