Package: matlab.unittest.parameters
Base class for parameters
In parameterized testing, use parameters to pass data to test methods.
Instantiate a Parameter
using the static fromData
method.
Property
— Name of property that defines Parameter
This property is read-only.
Name of the property that defines the Parameter
, stored as a
character vector.
Name
— Parameter value nameThis property is read-only.
Parameter value name, stored as a character vector. Name
uniquely identifies a particular value for a parameter.
Value
— Parameter valueThis property is read-only.
Parameter value, stored as any type of array. Value
holds the
data that the TestRunner
passes into a parameterized method.
fromData | Create parameters from data |
Value. To learn how value classes affect copy operations, see Copying Objects.
In your working folder, create testZeros.m
. This class contains five test methods, resulting in eleven parameterized tests.
classdef testZeros < matlab.unittest.TestCase properties (TestParameter) type = {'single','double','uint16'}; outSize = struct('s2d',[3 3], 's3d',[2 5 4]); end methods (Test) function testClass(testCase, type, outSize) testCase.verifyClass(zeros(outSize,type), type); end function testSize(testCase, outSize) testCase.verifySize(zeros(outSize), outSize); 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
Redefine the type
parameter so that the test uses uint64
and int64
data types in the parameterization instead of single
, double
, and uint16
. Create parameters.
import matlab.unittest.parameters.Parameter newType = {'int64','uint64'}; param = Parameter.fromData('type',newType);
Create a test suite that injects the param
parameters. View the names of the tests in the suite. The injected parameters are indicated by #ext
.
import matlab.unittest.TestSuite suite = TestSuite.fromClass(?testZeros,'ExternalParameters',param); {suite.Name}'
ans = 9×1 cell array {'testZeros/testClass(type=int64#ext,outSize=s2d)' } {'testZeros/testClass(type=int64#ext,outSize=s3d)' } {'testZeros/testClass(type=uint64#ext,outSize=s2d)'} {'testZeros/testClass(type=uint64#ext,outSize=s3d)'} {'testZeros/testSize(outSize=s2d)' } {'testZeros/testSize(outSize=s3d)' } {'testZeros/testDefaultClass' } {'testZeros/testDefaultSize' } {'testZeros/testDefaultValue' }
Run the suite.
results = suite.run;
Running testZeros ......... Done testZeros __________
Redefine the outSize
parameter so that the test parameterizes for 1-d and 4-d arrays. Create parameters from newType
and newSize
.
newSize = struct('s2d',[5 3],'s4d',[2 3 2 4]); param = Parameter.fromData('type',newType,'outSize',newSize);
Create a test suite that injects the param
parameters. View the names of the tests in the suite. The injected parameters are indicated by #ext
.
import matlab.unittest.TestSuite suite = TestSuite.fromClass(?testZeros,'ExternalParameters',param); {suite.Name}'
ans = 9×1 cell array {'testZeros/testClass(type=int64#ext,outSize=s2d#ext)' } {'testZeros/testClass(type=int64#ext,outSize=s4d#ext)' } {'testZeros/testClass(type=uint64#ext,outSize=s2d#ext)'} {'testZeros/testClass(type=uint64#ext,outSize=s4d#ext)'} {'testZeros/testSize(outSize=s2d#ext)' } {'testZeros/testSize(outSize=s4d#ext)' } {'testZeros/testDefaultClass' } {'testZeros/testDefaultSize' } {'testZeros/testDefaultValue' }
Run the suite.
results = suite.run;
Running testZeros ......... Done testZeros __________
You have a modified version of this example. Do you want to open this example with your edits?