主要内容

matlab.unittest.selectors.HasProcedureName 类

命名空间: matlab.unittest.selectors
超类: matlab.unittest.selectors.Selector

根据过程名称选择 TestSuite 数组元素

描述

matlab.unittest.selectors.HasProcedureName 类提供用于根据测试过程名称过滤测试套件的选择器。

在基于类的测试中,测试过程的名称是包含该测试的 Test 方法的名称。在基于函数的测试中,它是包含测试的局部函数的名称。在基于脚本的测试中,它是从测试部分标题生成的名称。与测试套件元素的名称不同,测试过程的名称不包括任何命名空间名称、文件名或关于参数化的信息。

类属性

Sealed
true

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

创建对象

描述

selector = matlab.unittest.selectors.HasProcedureName(name) 创建一个选择器,用于选择具有指定测试过程名称的 TestSuite 数组元素。

示例

输入参量

全部展开

测试过程的名称,指定为字符串标量、字符向量或 matlab.unittest.constraints.Constraint 对象。按过程名称选择测试取决于 name 的指定方式:

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

  • 如果指定约束,测试过程的名称必须满足该约束。

此参量设置 Constraint 属性。

属性

全部展开

将测试包含在经过过滤的测试套件中时测试过程名称必须满足的条件,以 matlab.unittest.constraints.Constraint 对象形式返回。

此属性由 name 输入参量设置:

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

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

属性:

GetAccess
public
SetAccess
immutable

示例

全部折叠

通过使用 HasProcedureName 类选择测试来创建经过过滤的测试套件。

在当前文件夹中名为 ZerosTest.m 的文件中,创建 ZerosTest 类来测试 zeros 函数。

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.HasProcedureName
import matlab.unittest.constraints.ContainsSubstring

根据 ZerosTest 类创建一个测试套件。然后,显示 TestSuite 数组元素的名称。每个名称包括测试过程名称。

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'               }

选择过程名称为 testClass 的所有测试。

suite1 = suite.selectIf(HasProcedureName("testClass"));
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)'}

选择其过程名称包含 "Size""Value" 的所有测试。

suite2 = suite.selectIf(HasProcedureName(ContainsSubstring("Size")) | ...
    HasProcedureName(ContainsSubstring("Value")));
disp({suite2.Name}')
    {'ZerosTest/testSize(size=s2d)'}
    {'ZerosTest/testSize(size=s3d)'}
    {'ZerosTest/testDefaultSize'   }
    {'ZerosTest/testDefaultValue'  }

通过仅包括其过程名称包含子字符串 "Class" 的测试,直接基于 ZerosTest 类创建一个经过过滤的测试套件。

suite3 = TestSuite.fromClass(?ZerosTest, ...
    HasProcedureName(ContainsSubstring("Class")));
disp({suite3.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/testDefaultClass'               }

替代功能

根据测试过程名称过滤测试套件时,使用 HasProcedureName 类可以获得最大的灵活性。您也可以使用 ProcedureName 名称-值参量创建一个经过过滤的测试套件。例如:

filteredSuite = matlab.unittest.TestSuite.fromClass(?ZerosTest, ...
    "ProcedureName","testClass");

您还可以使用 runtestsrunperf 函数的 ProcedureName 名称-值参量来选择和运行测试。例如:

results = runtests("ZerosTest.m","ProcedureName","testClass");

版本历史记录

在 R2017a 中推出