matlab.unittest.selectors. Класс HasParameter

Пакет: matlab.unittest.selectors

Селектор для элементов TestSuite определяется параметризацией

Описание

Селектор HasParameter фильтрует элементы массива TestSuite, определенные параметризацией.

Конструкция

matlab.unittest.selectors.HasParameter создает селектор для элементов TestSuite, определенных их параметризацией. Когда вы инстанцируете HasParameter без входных параметров, получившийся массив TestSuite только содержит элементы, которые параметризовали методы тестирования.

matlab.unittest.selectors.HasParameter(Name,Value) создает селектор с дополнительными опциями, заданными одним или несколькими аргументами пары Name,Value. Селектор фильтрует на основе имени свойства, которое задает параметр, имя параметра и значение параметра. Для элемента, который будет выбран для массива TestSuite, это должно иметь по крайней мере один параметр, который удовлетворяет все условия.

Входные параметры

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

'Property'

Имя свойства, которое задает параметр, заданный как вектор символов или как экземпляр класса matlab.unittest.constraints.Constraint. Если заданное имя свойства является вектором символов, среда тестирования создает ограничение IsEqualTo с Property как ожидаемое значение.

'Name'

Имя параметра, заданного как вектор символов или как экземпляр класса matlab.unittest.constraints.Constraint. Если указанное имя является вектором символов, среда тестирования создает ограничение IsEqualTo с Name как ожидаемое значение.

'Value'

Значение параметра, заданного как любой тип данных MATLAB® или как экземпляр класса matlab.unittest.constraints.Constraint. Если заданное имя свойства не является ограничением, среда тестирования создает ограничение IsEqualTo с входными данными, Value, как ожидаемое значение.

Свойства

PropertyConstraint

Условие, которое тестовое имя свойства параметра элемента должно удовлетворить, чтобы быть включенным в тестовый набор, задало как экземпляр Constraint во входном параметре Property.

NameConstraint

Условие, которое тестовое название параметра элемента должно удовлетворить, чтобы быть включенным в тестовый набор, задало как экземпляр Constraint во входном параметре Name.

ValueConstraint

Условие, которое тестовое значение свойства параметра элемента должно удовлетворить, чтобы быть включенным в тестовый набор, задало как экземпляр Constraint во входном параметре Value.

Примеры

свернуть все

В вашей рабочей папке создайте testZeros.m. Этот класс содержит четыре метода тестирования.

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

Тестовый класс содержит два параметризованных метода тестирования, testClass и testSize.

В командной строке создайте тестовый набор из файла.

s = matlab.unittest.TestSuite.fromFile('testZeros.m');
{s.Name}'
ans =

  11×1 cell array

    {'testZeros/testClass(type=single,outSize=s2d)'}
    {'testZeros/testClass(type=single,outSize=s3d)'}
    {'testZeros/testClass(type=double,outSize=s2d)'}
    {'testZeros/testClass(type=double,outSize=s3d)'}
    {'testZeros/testClass(type=uint16,outSize=s2d)'}
    {'testZeros/testClass(type=uint16,outSize=s3d)'}
    {'testZeros/testSize(outSize=s2d)'             }
    {'testZeros/testSize(outSize=s3d)'             }
    {'testZeros/testDefaultClass'                  }
    {'testZeros/testDefaultSize'                   }
    {'testZeros/testDefaultValue'                  }

Комплект содержит 11 тестовых элементов: 6 из параметризованного метода testClass, 2 из параметризованного метода testSize, и 1 от каждого testDefaultClass, testDefaultSize и методов testDefaultValue.

Выберите все тестовые элементы от параметризованных методов тестирования.

import matlab.unittest.selectors.HasParameter;

s1 = s.selectIf(HasParameter);
{s1.Name}'
ans =

  8×1 cell array

    {'testZeros/testClass(type=single,outSize=s2d)'}
    {'testZeros/testClass(type=single,outSize=s3d)'}
    {'testZeros/testClass(type=double,outSize=s2d)'}
    {'testZeros/testClass(type=double,outSize=s3d)'}
    {'testZeros/testClass(type=uint16,outSize=s2d)'}
    {'testZeros/testClass(type=uint16,outSize=s3d)'}
    {'testZeros/testSize(outSize=s2d)'             }
    {'testZeros/testSize(outSize=s3d)'             }

Комплект содержит восемь тестовых элементов от двух параметризованных методов тестирования.

Выберите все тестовые элементы от непараметризованных методов тестирования.

s2 = s.selectIf(~HasParameter);
{s2.Name}'
ans =

  3×1 cell array

    {'testZeros/testDefaultClass'}
    {'testZeros/testDefaultSize' }
    {'testZeros/testDefaultValue'}

Выберите все тестовые элементы, которые параметризованы и имеют свойство под названием 'type' с названием параметра 'double'.

s3 = s.selectIf(HasParameter('Property','type', 'Name','double'));
{s3.Name}'
ans =

  2×1 cell array

    {'testZeros/testClass(type=double,outSize=s2d)'}
    {'testZeros/testClass(type=double,outSize=s3d)'}

Получившийся комплект содержит два элемента. Метод testClass является единственным методом в testZeros, который использует свойство 'type'. Выбор только 'double' от параметров приводит к двум тестовым элементам — один для каждого значения 'outSize'.

Выберите все тестовые элементы что параметра, заданного свойством начиная с 't'.

import matlab.unittest.constraints.StartsWithSubstring;

s4 = s.selectIf(HasParameter('Property',StartsWithSubstring('t')));
{s4.Name}'
ans =

  6×1 cell array

    {'testZeros/testClass(type=single,outSize=s2d)'}
    {'testZeros/testClass(type=single,outSize=s3d)'}
    {'testZeros/testClass(type=double,outSize=s2d)'}
    {'testZeros/testClass(type=double,outSize=s3d)'}
    {'testZeros/testClass(type=uint16,outSize=s2d)'}
    {'testZeros/testClass(type=uint16,outSize=s3d)'}

Получившийся комплект содержит шесть параметризованных тестовых элементов из метода testClass. Метод testSize параметризован, но элементы из метода не включены в комплект, потому что метод не использует свойство, которое запускается с 't'.

Выберите все тестовые элементы, которые параметризованы и тестируют функцию zeros с массивом 2-D. Значение параметров, представляющее массив 2-D, имеет длину 1 (например, zeros(3)) или 2 (например, zeros(2,3)).

import matlab.unittest.constraints.HasLength;

s5 = s.selectIf(HasParameter('Property','outSize',...
    'Value', HasLength(1)|HasLength(2)));
{s5.Name}'
ans =

  4×1 cell array

    {'testZeros/testClass(type=single,outSize=s2d)'}
    {'testZeros/testClass(type=double,outSize=s2d)'}
    {'testZeros/testClass(type=uint16,outSize=s2d)'}
    {'testZeros/testSize(outSize=s2d)'             }

Выберите только тестовый элемент, который тестирует это, вывод является типом данных double и что это имеет правильный размер для массива 2-D.

s6 = s.selectIf(HasParameter('Property','type','Name','double')...
    & HasParameter('Property','outSize','Name','s2d'))
s6 = 

  Test with properties:

                  Name: 'testZeros/testClass(type=double,outSize=s2d)'
         ProcedureName: 'testClass'
             TestClass: "testZeros"
            BaseFolder: 'C:\work'
      Parameterization: [1×2 matlab.unittest.parameters.TestParameter]
    SharedTestFixtures: [0×0 matlab.unittest.fixtures.EmptyFixture]
                  Tags: {1×0 cell}

Tests Include:
   2 Unique Parameterizations, 0 Shared Test Fixture Classes, 0 Tags.

Введенный в R2014a