matlab.unittest.parameters.Parameter.fromData

Класс: matlab.unittest.parameters.Parameter
Пакет: matlab.unittest.parameters

Создайте параметры из данных

Описание

пример

param = matlab.unittest.parameters.Parameter.fromData(prop,nameVal) создает массив Parameter экземпляры, где prop задает имя свойства параметризации всего Parameter элементы и nameVal задает имя и значение для каждого Parameter элемент.

Используя fromData походит на параметры определения в основанном на классах тесте с помощью properties блок. Например:

properties (TestParameter)
    prop = nameVal
end
Однако с fromData можно переопределить существующие тестовые параметры снаружи тестового класса.

Используйте fromData метод, чтобы переопределить параметры, заданные в TestParameter, MethodSetupParameter, или ClassSetupParameter properties блок параметрированного теста.

пример

param = matlab.unittest.parameters.Parameter.fromData(prop1,nameVal1,...,propN,nameValN) задает Parameter экземпляры с несколькими именами свойства параметризации.

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

развернуть все

Параметризация имени свойства в виде вектора символов или строки.

Пример: 'myParam'

Название параметра и значение в виде непустого массива ячеек или struct.

Если nameVal struct, поле struct представляет название параметра, и значение struct представляет значение параметров. Если nameVal массив ячеек, каждый элемент представляет значение параметров.

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

Пример: struct('small', 1, 'medium', 10, 'large', 100)

Пример: {42,7,13}

Пример: {'double','single','uint16'}

Примеры

развернуть все

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

Переопределите type параметр так, чтобы тест использовал uint64 и int64 типы данных в параметризации вместо single'double', и uint16. Создайте параметры.

import matlab.unittest.parameters.Parameter
newType = {'int64','uint64'};
param = Parameter.fromData('type',newType);

Создайте тестовый набор, который вводит param параметры. Просмотрите имена тестов в наборе. Введенные параметры обозначаются #ext.

import matlab.unittest.TestSuite
suite = TestSuite.fromClass(?testZeros,'ExternalParameters',param);
{suite.Name}'
ans =

  9×1 cell array

    {'testZeros/testClass(type=int64#ext,outSize=s2d)' }
    {'testZeros/testClass(type=int64#ext,outSize=s3d)' }
    {'testZeros/testClass(type=uint64#ext,outSize=s2d)'}
    {'testZeros/testClass(type=uint64#ext,outSize=s3d)'}
    {'testZeros/testSize(outSize=s2d)'                 }
    {'testZeros/testSize(outSize=s3d)'                 }
    {'testZeros/testDefaultClass'                      }
    {'testZeros/testDefaultSize'                       }
    {'testZeros/testDefaultValue'                      }

Запустите набор.

results = suite.run;
Running testZeros
.........
Done testZeros
__________

Переопределите outSize параметр так, чтобы тест параметрировал для 1-d и 4-d массивов. Создайте параметры из newType и newSize.

newSize = struct('s2d',[5 3],'s4d',[2 3 2 4]);
param = Parameter.fromData('type',newType,'outSize',newSize);

Создайте тестовый набор, который вводит param параметры. Просмотрите имена тестов в наборе. Введенные параметры обозначаются #ext.

import matlab.unittest.TestSuite
suite = TestSuite.fromClass(?testZeros,'ExternalParameters',param);
{suite.Name}'
ans =

  9×1 cell array

    {'testZeros/testClass(type=int64#ext,outSize=s2d#ext)' }
    {'testZeros/testClass(type=int64#ext,outSize=s4d#ext)' }
    {'testZeros/testClass(type=uint64#ext,outSize=s2d#ext)'}
    {'testZeros/testClass(type=uint64#ext,outSize=s4d#ext)'}
    {'testZeros/testSize(outSize=s2d#ext)'                 }
    {'testZeros/testSize(outSize=s4d#ext)'                 }
    {'testZeros/testDefaultClass'                          }
    {'testZeros/testDefaultSize'                           }
    {'testZeros/testDefaultValue'                          }

Запустите набор.

results = suite.run;
Running testZeros
.........
Done testZeros
__________

Введенный в R2018b