matlab.unittest.selectors.HasParameter 类
命名空间: matlab.unittest.selectors
按参数化类别选择 TestSuite
数组元素
描述
matlab.unittest.selectors.HasParameter
类提供用于按参数化类别过滤测试套件的选择器。有关参数化测试的详细信息,请参阅在基于类的测试中使用参数。
创建对象
描述
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")
Property
— 参数化属性的名称
字符串标量 | 字符向量 | matlab.unittest.constraints.Constraint
对象
参数化属性的名称,指定为字符串标量、字符向量或 matlab.unittest.constraints.Constraint
对象。按属性名称选择测试受以下条件限制:
如果指定字符串标量或字符向量,则测试的参数化属性的名称必须与指定的值相同。
如果指定约束,则测试的参数化属性的名称必须满足该约束。
此参量设置 PropertyConstraint
属性。
Name
— 参数名称
字符串标量 | 字符向量 | matlab.unittest.constraints.Constraint
对象
参数名称,指定为字符串标量、字符向量或 matlab.unittest.constraints.Constraint
对象。根据参数名称选择测试受以下条件限制:
如果指定字符串标量或字符向量,则测试的参数名称必须与指定的值相同。
如果指定约束,则测试的参数名称必须满足该约束。
此参量设置 NameConstraint
属性。
Value
— 参数值
任何值
参数值,指定为任意数据类型的值。根据参数值选择测试受限于以下条件:
如果指定约束以外的值,则测试的参数值必须与指定的值相同。
如果指定约束,则测试的参数值必须满足该约束。
此参量设置 ValueConstraint
属性。
属性
示例
按参数化类别选择测试
通过使用 HasParameter
类选择测试来创建过滤后测试套件。
在当前文件夹中名为 ZerosTest.m
的文件中,创建 ZerosTest
类来测试 zeros
函数。该类有两个参数化的 Test
方法:testClass
和 testSize
。
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 中推出R2022b: 从元胞数组生成的参数名称更具描述性
当您将非空元胞数组分配给参数化属性时,测试框架会根据元胞数组中元素的值、类型和维度生成参数名称。在以前的版本中,如果属性值是字符向量元胞数组,该框架将根据元胞数组中的值生成参数名称。否则,该框架将参数名称指定为 value1
、value2
、…、valueN
。
如果您的代码使用参数名称来创建或过滤测试套件,请用描述性参数名称替换旧的参数名称。例如,通过用描述性参数名称替换 value1
来更新 suite = testsuite(pwd,"ParameterName","value1")
。
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)