主要内容

createTestMethodInstance

R2026b

类: matlab.unittest.plugins.TestRunnerPlugin
命名空间: matlab.unittest.plugins

扩展方法级别 TestCase 实例的创建

描述

tc = createTestMethodInstance(plugin,pluginData) 扩展方法级别 TestCase 实例的创建,并返回修改后的 TestCase 实例。测试框架在 runTest 方法的作用域内计算此方法。

此方法的典型实现是将侦听程序添加到源自方法级别实例的各种事件。因为 TestCase 类继承自 handle 类,所以通过从 createTestMethodInstance 方法内调用 addlistener 方法来添加侦听程序。测试框架为 matlab.unittest.Test 数组的每个元素创建实例并将每个实例传递到其相应的 Test 方法及任何带有 TestMethodSetup 或 TestMethodTeardown 属性的方法。

示例

输入参数

全部展开

插件,指定为 matlab.unittest.plugins.TestRunnerPlugin 对象。

方法级别 TestCase 创建信息,指定为 matlab.unittest.plugins.plugindata.TestContentCreationPluginData 对象。测试框架使用此信息来描述该插件的测试内容。

属性

Accessprotected

要了解方法的属性,请参阅方法属性。

示例

全部展开

创建一个插件并覆盖 createTestMethodInstance 方法以统计方法级别假设失败的数量。

添加侦听程序以侦听假设失败。使用 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 中推出