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

Пакет: matlab.unittest.selectors

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

Описание

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

Конструкция

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

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

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

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

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

Свойство

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

Имя

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

Значение

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

Свойства

PropertyConstraint

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

NameConstraint

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

ValueConstraint

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

Примеры

свернуть все

В вашей рабочей папке создайте testZeros.m 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

Была ли эта тема полезной?