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

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

  • Если значение свойства является массивом ячеек из символьных векторов, 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)'}

Получившийся набор содержит два элемента. 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