matlab.unittest.selectors.HasParameter class

Пакет: 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 имя аргумента и 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. Этот класс содержит пять методов тестирования.

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