Main Content

append

类: matlab.unittest.plugins.plugindata.ResultDetails
包: matlab.unittest.plugins.plugindata

向测试结果详细信息中添加数据

说明

示例

append(resultDetails,field,data)data 追加到 TestResult 数组的 field 属性中的 Details。如果 field 不存在,该方法会将其添加到 Details 结构体中,并将 data 存储在添加的字段中。

当您在插件类方法的作用域内调用 append 时,追加操作会应用于受插件方法影响的所有 TestResult 对象。例如,如果您在 runSessionTestRunnerPlugin 方法的作用域内调用 append,则会将相同的数据添加到属于测试会话的所有 TestResult 对象。

输入参数

全部展开

测试结果详细信息的修改器,指定为 matlab.unittest.plugins.plugindata.ResultDetails 类的实例。

字段名称,指定为字符向量或字符串标量。有效字段名称以字母开头,可以包含字母、数字和下划线。字段名称的最大长度是 namelengthmax 函数返回的值。

要追加到字段的数据,指定为标量或对象数组。例如,您可以将 data 指定为数值标量、字符串数组、元胞数组、结构体或类对象。

您可以对特定字段调用 append 方法,并根据需要多次向该字段追加数据。如果将不同类的元素追加到一个字段中,MATLAB® 会转换一些元素,以便该字段中的所有元素均属于同一类型。有关详细信息,请参阅不同类的有效合并

示例

全部展开

测试框架可以将测试套件分成不同的各组,并在当前并行池中运行每个组(需要 Parallel Computing Toolbox™)。创建一个插件,该插件将组编号添加到 TestResult 对象中。

在当前文件夹中的文件中,创建可并行化的插件类 ExamplePlugin,它覆盖 TestRunnerPluginrunTestSuite 方法。将包含组编号的 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 的文件,其中包含此参数化测试类。此类产生 300 个测试,用于比较 1 和 10 之间的伪随机整数。

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 中推出