Main Content

matlab.unittest.plugins.plugindata.ResultDetails 类

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

用于修改测试结果详细信息的类

自 R2020a 起

描述

ResultDetails 类使 TestRunnerPlugin 实例能够修改 TestResult 数组的 Details 属性。要修改 Details 结构体,请在插件类方法的作用域内调用 ResultDetails 的方法。TestRunner 实例化此类,因此不需要您直接创建该类的对象。

注意

ResultDetails 无法修改最终化测试结果。当不再有鉴定可能修改测试结果时,表示测试结果是最终化的。

方法

全部展开

示例

全部折叠

测试框架可以将测试套件分成不同的各组,并在当前并行池中运行每个组(需要 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 中推出