Main Content

append

クラス: matlab.unittest.plugins.plugindata.ResultDetails
パッケージ: matlab.unittest.plugins.plugindata

テスト結果の詳細へのデータの追加

説明

append(resultDetails,field,data) は、dataTestResult 配列の Details プロパティの field に付加します。field が存在しない場合、このメソッドはこれを Details 構造体に追加し、data を追加されたフィールドに格納します。

プラグイン クラス メソッドのスコープ内で append を呼び出す場合、付加操作は、プラグイン メソッドの影響を受けるすべての TestResult オブジェクトに適用されます。たとえば、TestRunnerPluginrunSession メソッドのスコープ内で append を呼び出す場合、テスト セッションに属するすべての TestResult オブジェクトに同じデータが追加されます。

入力引数

すべて展開する

テスト結果の詳細の修飾子。matlab.unittest.plugins.plugindata.ResultDetails クラスのインスタンスとして指定します。

フィールド名。文字ベクトルまたは string スカラーとして指定します。有効なフィールド名は文字で始まり、文字、数字およびアンダースコアの組み合わせを使用できます。フィールド名の最大長は、関数 namelengthmax が返す値です。

フィールドに付加するデータ。スカラーまたはオブジェクトの配列として指定します。たとえば、data は数値スカラー、string 配列、cell 配列、構造体、またはクラス オブジェクトとして指定できます。

特定のフィールドに対して append メソッドを呼び出し、データを必要な数だけそのフィールドに付加することができます。異なるデータ型の要素をフィールドに付加するために、MATLAB® はフィールド内のすべての要素の型が同じになるように、一部の要素を変換します。詳細については、異なるクラスの有効な組み合わせを参照してください。

すべて展開する

テスト フレームワークは、テスト スイートをグループに分け、現在の並列プール上で各グループを実行できます (Parallel Computing Toolbox™ が必要)。グループ番号を TestResult オブジェクトに追加するプラグインを作成します。

現在のフォルダー内のファイルに、TestRunnerPluginrunTestSuite メソッドをオーバーライドする、並列化可能なプラグイン クラス ExamplePlugin を作成します。グループ番号を含む Group フィールドを、グループに対応する TestResult オブジェクトの Details プロパティに追加します。

classdef ExamplePlugin < ...
        matlab.unittest.plugins.TestRunnerPlugin & ...
        matlab.unittest.plugins.Parallelizable
    
    methods (Access = protected)
        function runTestSuite(plugin,pluginData)
            
            % Inspect pluginData to get the TestSuite group number
            groupNumber = pluginData.Group;
            
            % Add the group number to TestResult objects
            resultDetails = pluginData.ResultDetails;
            resultDetails.append('Group',groupNumber)
            
            % Invoke the superclass method
            runTestSuite@matlab.unittest.plugins.TestRunnerPlugin(plugin,pluginData);
        end    
    end
end

現在のフォルダーに、このパラメーター化されたテスト クラスを含む ExampleTest.m という名前のファイルを作成します。このクラスでは、1 から 10 の間の整数の疑似乱数を比較するテストが 300 回行われます。

classdef ExampleTest < matlab.unittest.TestCase
    properties (TestParameter)
        num1 = num2cell(randi(10,1,10));
        num2 = num2cell(randi(10,1,10));
    end
    
    methods(Test)
        function testAssert(testCase,num1,num2)
            testCase.assertNotEqual(num1,num2)
        end
        function testVerify(testCase,num1,num2)
            testCase.verifyNotEqual(num1,num2)
        end
        function testAssume(testCase,num1,num2)
            testCase.assumeNotEqual(num1,num2)
        end
    end
end

コマンド プロンプトで ExampleTest クラスからテスト スイートを作成します。

suite = testsuite('ExampleTest');

プラグインなしで TestRunner インスタンスを作成し、ExamplePlugin をランナーに追加して、テストを並列実行します。

import matlab.unittest.TestRunner
runner = TestRunner.withNoPlugins;
runner.addPlugin(ExamplePlugin)
result = runner.runInParallel(suite);
Split tests into 18 groups and running them on 6 workers.
----------------
Finished Group 1
----------------

----------------
Finished Group 2
----------------

----------------
Finished Group 3
----------------

----------------
Finished Group 4
----------------

----------------
Finished Group 5
----------------

----------------
Finished Group 6
----------------

----------------
Finished Group 7
----------------

----------------
Finished Group 8
----------------

----------------
Finished Group 9
----------------

-----------------
Finished Group 10
-----------------

-----------------
Finished Group 11
-----------------

-----------------
Finished Group 12
-----------------

-----------------
Finished Group 13
-----------------

-----------------
Finished Group 14
-----------------

-----------------
Finished Group 15
-----------------

-----------------
Finished Group 16
-----------------

-----------------
Finished Group 17
-----------------

-----------------
Finished Group 18
-----------------

最初と最後の Test 要素のグループ番号を取得します。

groupOfFirst = result(1).Details.Group
groupOfLast = result(end).Details.Group
groupOfFirst =

     1


groupOfLast =

    18

バージョン履歴

R2020a で導入