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

Для просмотра документации необходимо авторизоваться на сайте