exponenta event banner

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

Пакет: matlab.unittest.selectors

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

Описание

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