matlab.unittest.selectors.HasParameter 类
命名空间: matlab.unittest.selectors
超类: matlab.unittest.selectors.Selector
按参数化类别选择 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")
参数化属性的名称,指定为字符串标量、字符向量或 matlab.unittest.constraints.Constraint 对象。按属性名称选择测试受以下条件限制:
如果指定字符串标量或字符向量,则测试的参数化属性的名称必须与指定的值相同。
如果指定约束,则测试的参数化属性的名称必须满足该约束。
此参量设置 PropertyConstraint 属性。
参数名称,指定为字符串标量、字符向量或 matlab.unittest.constraints.Constraint 对象。根据参数名称选择测试受以下条件限制:
如果指定字符串标量或字符向量,则测试的参数名称必须与指定的值相同。
如果指定约束,则测试的参数名称必须满足该约束。
此参量设置 NameConstraint 属性。
参数值,指定为任意数据类型的值。根据参数值选择测试受限于以下条件:
如果指定约束以外的值,则测试的参数值必须与指定的值相同。
如果指定约束,则测试的参数值必须满足该约束。
此参量设置 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 中推出当您将非空元胞数组分配给参数化属性时,测试框架会根据元胞数组中元素的值、类型和维度生成参数名称。在以前的版本中,如果属性值是字符向量元胞数组,该框架将根据元胞数组中的值生成参数名称。否则,该框架将参数名称指定为 value1、value2、…、valueN。
如果您的代码使用参数名称来创建或过滤测试套件,请用描述性参数名称替换旧的参数名称。例如,通过用描述性参数名称替换 value1 来更新 suite = testsuite(pwd,"ParameterName","value1")。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- 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)