matlab.unittest.selectors.HasProcedureName - Select TestSuite array elements by procedure name - MATLAB (original) (raw)

Namespace: matlab.unittest.selectors
Superclasses: matlab.unittest.selectors.Selector

Select TestSuite array elements by procedure name

Description

The matlab.unittest.selectors.HasProcedureName class provides a selector for filtering a test suite based on test procedure names.

In a class-based test, the name of a test procedure is the name of aTest method that contains the test. In a function-based test, it is the name of a local function that contains the test. In a script-based test, it is a name generated from the test section title. Unlike the name of a test suite element, the name of a test procedure does not include any namespace name, filename, or information about parameterization.

Creation

Description

selector = matlab.unittest.selectors.HasProcedureName([name](#mw%5F08386855-5d69-4925-9f4d-61f42d82e7b0)) creates a selector that selects TestSuite array elements with the specified test procedure name.

example

Input Arguments

expand all

Name of the test procedure, specified as a string scalar, character vector, ormatlab.unittest.constraints.Constraint object. Test selection by procedure name depends on how you specifyname:

This argument sets the [Constraint](matlab.unittest.selectors.hasprocedurename-class.html#mw%5Fb5073d0d-58ba-4c6f-a52b-b0c3469e48d5) property.

Properties

expand all

Condition that the test procedure name must satisfy for the test to be included in the filtered test suite, returned as a matlab.unittest.constraints.Constraint object.

This property is set by the name input argument:

Attributes:

GetAccess public
SetAccess immutable

Examples

collapse all

Create filtered test suites by selecting tests using theHasProcedureName class.

In a file named ZerosTest.m in your current folder, create theZerosTest class, which tests the zeros function.

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 the classes used in this example.

import matlab.unittest.TestSuite import matlab.unittest.selectors.HasProcedureName import matlab.unittest.constraints.ContainsSubstring

Create a test suite from the ZerosTest class. Then, display the names of the TestSuite array elements. Each name includes the test procedure name.

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

Select all the tests with testClass as the procedure name.

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

Select all the tests whose procedure name contains "Size" or"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'  }

Create a filtered test suite directly from the ZerosTest class by including only tests whose procedure name contains the substring"Class".

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

Alternative Functionality

Use the HasProcedureName class for maximum flexibility when filtering a test suite based on test procedure names. Alternatively, you can create a filtered test suite using the ProcedureName name-value argument. For example:

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

You can also select and run tests using the ProcedureName name-value argument of the runtests or runperf function. For example:

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

Version History

Introduced in R2017a