Main Content

matlab.unittest.selectors.HasParameter 类

命名空间: matlab.unittest.selectors

按参数化类别选择 TestSuite 数组元素

描述

matlab.unittest.selectors.HasParameter 类提供用于按参数化类别过滤测试套件的选择器。有关参数化测试的详细信息,请参阅在基于类的测试中使用参数

类属性

Sealed
true

有关类属性的信息,请参阅类属性

创建对象

描述

示例

selector = matlab.unittest.selectors.HasParameter 创建一个选择器,用于选择任何参数化的 TestSuite 数组元素。

示例

selector = matlab.unittest.selectors.HasParameter(Name,Value) 使用由一个或多个名称-值参量指定的附加选项创建一个选择器。例如,selector = matlab.unittest.selectors.HasParameter("Property","type") 创建一个选择器,该选择器选择所有具有参数化属性 "type" 的参数化测试。

输入参量

全部展开

名称-值参数

将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。

示例: selector = matlab.unittest.selectors.HasParameter(Property="type")

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: selector = matlab.unittest.selectors.HasParameter("Property","type")

参数化属性的名称,指定为字符串标量、字符向量或 matlab.unittest.constraints.Constraint 对象。按属性名称选择测试受以下条件限制:

  • 如果指定字符串标量或字符向量,则测试的参数化属性的名称必须与指定的值相同。

  • 如果指定约束,则测试的参数化属性的名称必须满足该约束。

此参量设置 PropertyConstraint 属性。

参数名称,指定为字符串标量、字符向量或 matlab.unittest.constraints.Constraint 对象。根据参数名称选择测试受以下条件限制:

  • 如果指定字符串标量或字符向量,则测试的参数名称必须与指定的值相同。

  • 如果指定约束,则测试的参数名称必须满足该约束。

此参量设置 NameConstraint 属性。

参数值,指定为任意数据类型的值。根据参数值选择测试受限于以下条件:

  • 如果指定约束以外的值,则测试的参数值必须与指定的值相同。

  • 如果指定约束,则测试的参数值必须满足该约束。

此参量设置 ValueConstraint 属性。

属性

全部展开

测试要包括在滤后测试套件中时其参数化属性所必须满足的条件,以 matlab.unittest.constraints.Constraint 对象形式返回。

此属性由 Property 名称-值参量设置:

  • 如果指定字符串标量或字符向量,测试框架会将属性设置为 IsEqualTo 约束,并将预期值作为指定的参数化属性名称。

  • 如果指定约束,测试框架会将该属性设置为约束。

属性:

GetAccess
public
SetAccess
immutable

测试要包括在滤后测试套件中时其参数名称所必须满足的条件,以 matlab.unittest.constraints.Constraint 对象形式返回。

此属性由 Name 名称-值参量设置:

  • 如果您指定字符串标量或字符向量,测试框架会将该属性设置为 IsEqualTo 约束,并将预期值作为指定的参数名称。

  • 如果指定约束,测试框架会将该属性设置为约束。

属性:

GetAccess
public
SetAccess
immutable

测试要包括在滤后测试套件中时其参数值所必须满足的条件,以 matlab.unittest.constraints.Constraint 对象形式返回。

此属性由 Value 名称-值参量设置:

  • 如果您指定约束以外的值,测试框架会将该属性设置为 IsEqualTo 约束,并将预期值作为指定的参数值。

  • 如果指定约束,测试框架会将该属性设置为约束。

属性:

GetAccess
public
SetAccess
immutable

示例

全部折叠

通过使用 HasParameter 类选择测试来创建过滤后测试套件。

在当前文件夹中名为 ZerosTest.m 的文件中,创建 ZerosTest 类来测试 zeros 函数。该类有两个参数化的 Test 方法:testClasstestSize

classdef ZerosTest < matlab.unittest.TestCase
    properties (TestParameter)
        type = {'single','double','uint16'};
        size = struct("s2d",[3 3],"s3d",[2 5 4]);
    end
    
    methods (Test)
        function testClass(testCase,size,type)
            testCase.verifyClass(zeros(size,type),type)
        end
        
        function testSize(testCase,size)
            testCase.verifySize(zeros(size),size)
        end
        
        function testDefaultClass(testCase)
            testCase.verifyClass(zeros,"double")
        end

        function testDefaultSize(testCase)
            testCase.verifySize(zeros,[1 1])
        end
        
        function testDefaultValue(testCase)
            testCase.verifyEqual(zeros,0)
        end
    end
end

导入此示例中使用的类。

import matlab.unittest.TestSuite
import matlab.unittest.selectors.HasParameter
import matlab.unittest.constraints.StartsWithSubstring
import matlab.unittest.constraints.HasLength

基于 ZerosTest 类创建一个测试套件,并显示测试名称。该套件包含 11 个 Test 元素。

suite = testsuite("ZerosTest");
disp({suite.Name}')
    {'ZerosTest/testClass(size=s2d,type=single)'}
    {'ZerosTest/testClass(size=s2d,type=double)'}
    {'ZerosTest/testClass(size=s2d,type=uint16)'}
    {'ZerosTest/testClass(size=s3d,type=single)'}
    {'ZerosTest/testClass(size=s3d,type=double)'}
    {'ZerosTest/testClass(size=s3d,type=uint16)'}
    {'ZerosTest/testSize(size=s2d)'             }
    {'ZerosTest/testSize(size=s3d)'             }
    {'ZerosTest/testDefaultClass'               }
    {'ZerosTest/testDefaultSize'                }
    {'ZerosTest/testDefaultValue'               }

通过选择所有参数化测试来创建一个过滤后测试套件。

suite1 = suite.selectIf(HasParameter);
disp({suite1.Name}')
    {'ZerosTest/testClass(size=s2d,type=single)'}
    {'ZerosTest/testClass(size=s2d,type=double)'}
    {'ZerosTest/testClass(size=s2d,type=uint16)'}
    {'ZerosTest/testClass(size=s3d,type=single)'}
    {'ZerosTest/testClass(size=s3d,type=double)'}
    {'ZerosTest/testClass(size=s3d,type=uint16)'}
    {'ZerosTest/testSize(size=s2d)'             }
    {'ZerosTest/testSize(size=s3d)'             }

选择所有未参数化的测试。

suite2 = suite.selectIf(~HasParameter);
disp({suite2.Name}')
    {'ZerosTest/testDefaultClass'}
    {'ZerosTest/testDefaultSize' }
    {'ZerosTest/testDefaultValue'}

选择具有参数化属性 "type" 和参数名称 "double" 的所有参数化测试。

suite3 = suite.selectIf(HasParameter("Property","type","Name","double"));
disp({suite3.Name}')
    {'ZerosTest/testClass(size=s2d,type=double)'}
    {'ZerosTest/testClass(size=s3d,type=double)'}

选择具有名称以 "t" 开头的参数化属性的所有参数化测试。

suite4 = suite.selectIf(HasParameter("Property",StartsWithSubstring("t")));
disp({suite4.Name}')
    {'ZerosTest/testClass(size=s2d,type=single)'}
    {'ZerosTest/testClass(size=s2d,type=double)'}
    {'ZerosTest/testClass(size=s2d,type=uint16)'}
    {'ZerosTest/testClass(size=s3d,type=single)'}
    {'ZerosTest/testClass(size=s3d,type=double)'}
    {'ZerosTest/testClass(size=s3d,type=uint16)'}

选择满足以下条件的所有参数化测试:在 zeros 函数返回二维数组时(例如 zeros(2)zeros(2,3))对函数进行测试。

suite5 = suite.selectIf(HasParameter("Property","size", ...
    "Value",HasLength(1) | HasLength(2)));
disp({suite5.Name}')
    {'ZerosTest/testClass(size=s2d,type=single)'}
    {'ZerosTest/testClass(size=s2d,type=double)'}
    {'ZerosTest/testClass(size=s2d,type=uint16)'}
    {'ZerosTest/testSize(size=s2d)'             }

通过仅包括测试二维 double 数组的测试,直接基于 ZerosTest 类创建一个经过过滤的测试套件。

suite6 = TestSuite.fromClass(?ZerosTest, ...
    HasParameter("Property","type","Name","double") & ...
    HasParameter("Property","size","Name","s2d"));
disp({suite6.Name}')
    {'ZerosTest/testClass(size=s2d,type=double)'}

版本历史记录

在 R2014a 中推出

全部展开