Main Content

createTestMethodInstance

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

メソッド レベルの TestCase インスタンスの作成の拡張

説明

tc = createTestMethodInstance(plugin,pluginData) は、メソッド レベルの TestCase インスタンスの作成を拡張し、変更された TestCase インスタンス、tc を返します。このテスト フレームワークは、TestRunnerPluginrunTest メソッドのスコープ内でこのメソッドを評価します。このメソッドの一般的な実装では、メソッド レベルのインスタンスから発生するさまざまなイベントにリスナーを追加します。TestCasehandle クラスから継承するので、createTestMethodInstance メソッドの内部から addlistener メソッドを呼び出して、リスナーを追加します。テスト フレームワークは matlab.unittest.Test 配列のすべての要素のインスタンスを作成し、各インスタンスに対応する Test メソッドと TestMethodSetup 属性または TestMethodTeardown 属性をもつメソッドに渡します。

入力引数

plugin

プラグイン オブジェクト。matlab.unittest.plugins.TestRunnerPlugin クラスのインスタンスとして指定します。

pluginData

メソッド レベルの TestCase 作成情報。matlab.unittest.plugins.plugindata.TestContentCreationPluginData クラスのインスタンスとして指定します。テスト フレームワークはこの情報を使用してプラグインにテスト内容を記述します。

すべて展開する

仮定エラーをリッスンするリスナーを追加します。補助メソッド captureMethodLevelAssumptionFailureData を使用して、TestMethodAssumptionFailureData プロパティに値を取り込みます。

classdef ExamplePlugin < matlab.unittest.plugins.TestRunnerPlugin

    properties (SetAccess = private)
        TestMethodAssumptionFailureData = {};
    end

    methods (Access = protected)
        function testCase = createTestMethodInstance(plugin, pluginData)
            testCase = createTestMethodInstance@...
                matlab.unittest.plugins.TestRunnerPlugin(plugin, pluginData);

            instanceName = pluginData.Name;
            testCase.addlistener('AssumptionFailed', @(~,evd) ...
                plugin.captureMethodLevelAssumptionFailureData(evd,instanceName))
        end
    end

    methods (Access = private)
        function captureMethodLevelAssumptionFailureData(...
                plugin, eventData, instanceName)
            plugin.TestMethodAssumptionFailureData{end+1} = struct(...
                'InstanceName', instanceName, ...
                'ActualValue'     , eventData.ActualValue, ...
                'Constraint'      , eventData.Constraint, ...
                'Stack'           , eventData.Stack);
        end
    end

end

バージョン履歴

R2014a で導入