matlab.unittest.parameters.Parameter - Base class for parameters - MATLAB (original) (raw)
Namespace: matlab.unittest.parameters
Base class for parameters
Description
The matlab.unittest.parameters.Parameter
class is the base class for parameters used in parameterized testing. A Parameter
object contains parameterization information, including the parameter name and value, for a parameterized test. For more information about test parameterization, see Use Parameters in Class-Based Tests.
Properties
Name of the property that defines the parameter, represented as a character vector.
Attributes:
GetAccess | public |
---|---|
SetAccess | private |
Parameter name, represented as a character vector. The Name
property uniquely identifies a particular value for a parameter.
Attributes:
GetAccess | public |
---|---|
SetAccess | private |
Parameter value, represented as a value of any data type. TheValue
property holds the data that the test runner passes to the parameterized method that uses the parameter.
Attributes:
GetAccess | public |
---|---|
SetAccess | private |
Methods
Examples
Create parameters that are external to a test class by using the matlab.unittest.parameters.Parameter.fromData
method. Then, create a test suite by injecting these parameters and run the tests.
First, import the classes used in this example.
import matlab.unittest.parameters.Parameter import matlab.unittest.TestSuite
In a file named ZerosTest.m
in your current folder, create the ZerosTest
test 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
Using the fromData
static method, redefine the parameters associated with the type
property so that parameterized tests use int64
and uint64
instead of single
, double
, and uint16
as the data type.
newType = {'int64','uint64'}; param = Parameter.fromData("type",newType);
Create a test suite from the test class by injecting the new parameters, and then display the test names. The injected parameters are indicated by #ext
.
suite = TestSuite.fromClass(?ZerosTest,ExternalParameters=param); disp({suite.Name}')
{'ZerosTest/testClass(size=s2d,type=int64#ext)' }
{'ZerosTest/testClass(size=s2d,type=uint64#ext)'}
{'ZerosTest/testClass(size=s3d,type=int64#ext)' }
{'ZerosTest/testClass(size=s3d,type=uint64#ext)'}
{'ZerosTest/testSize(size=s2d)' }
{'ZerosTest/testSize(size=s3d)' }
{'ZerosTest/testDefaultClass' }
{'ZerosTest/testDefaultSize' }
{'ZerosTest/testDefaultValue' }
Run the tests in the test suite. In this example, all the tests pass.
Running ZerosTest ......... Done ZerosTest
Redefine the parameters associated with both the type
and size
parameterization properties.
newSize = struct("s1d",[1 5],"s4d",[2 3 2 4]); param = Parameter.fromData("type",newType,"size",newSize);
Create a test suite by injecting the new parameters in the param
array. Then, display the test names.
suite = TestSuite.fromClass(?ZerosTest,ExternalParameters=param); disp({suite.Name}')
{'ZerosTest/testClass(size=s1d#ext,type=int64#ext)' }
{'ZerosTest/testClass(size=s1d#ext,type=uint64#ext)'}
{'ZerosTest/testClass(size=s4d#ext,type=int64#ext)' }
{'ZerosTest/testClass(size=s4d#ext,type=uint64#ext)'}
{'ZerosTest/testSize(size=s1d#ext)' }
{'ZerosTest/testSize(size=s4d#ext)' }
{'ZerosTest/testDefaultClass' }
{'ZerosTest/testDefaultSize' }
{'ZerosTest/testDefaultValue' }
Run the tests using the newly injected parameters. The tests pass.
Running ZerosTest ......... Done ZerosTest
Version History
Introduced in R2018b