Main Content

append

类: matlab.unittest.plugins.plugindata.ResultDetails
命名空间: matlab.unittest.plugins.plugindata

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

自 R2020a 起

说明

示例

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

扩展功能

基于线程的环境
使用 MATLAB® backgroundPool 在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool 加快代码运行速度。

版本历史记录

在 R2020a 中推出