matlab.unittest.selectors.HasParameter class

Пакет: matlab.unittest.selectors

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

Описание

The 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 как ожидаемое значение.

MATLAB® генерирует имена параметров на основе свойства test class, которое определяет параметры:

  • Если значение свойства является массивом ячеек из векторов символов, MATLAB генерирует имена параметров из значений в массиве ячеек. В противном случае MATLAB задает имена параметров следующим value1, value2, …, valueN.

  • Если значение свойства является структурой, MATLAB генерирует имена параметров из полей структуры.

'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)'}

Получившийся набор содержит два элемента. The 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 способ. The testSize метод параметризирован, но элементы из метода не включены в набор, поскольку метод не использует свойство, которое начинается со 't'.

Выберите все тестовые элементы, которые параметризованы и протестируйте zeros функция со 2-D массив. A значения параметров, представляющий 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