Часто, необходимо итеративно запустить тесты, которые отличаются только в терминах тестовых данных. Например, вы можете хотеть протестировать это, функция производит ожидаемые выходные параметры для различных входных параметров. В этом случае тестовая логика является тем же самым, и единственной разницей между тестами являются фактические и ожидаемые значения для каждого вызова функции. С параметрированным тестированием можно реализовать код, чтобы итеративно запустить тесты с помощью различных значений данных. Когда метод параметрируется, среда тестирования автоматически вызывает метод для каждого значения параметров. Поэтому вы не обязаны реализовывать отдельный метод для каждого значения.
Классы, которые выводят из matlab.unittest.TestCase
класс может реализовать тестовую параметризацию с помощью специфичного для среды свойства и атрибутов метода. Чтобы обеспечить данные в качестве параметра в вашем основанном на классах тесте, задайте данные в properties
блокируйтесь с соответствующим атрибутом параметризации. Затем передайте свойство параметризации как входной параметр к одному или нескольким методам.
Например, рассмотрите SampleTest
класс. Класс задает параметрированный тест, потому что он задает свойство в properties
блокируйтесь с TestParameter
атрибут. Свойство передается методу тестирования и используется, чтобы выполнить проверку:
classdef SampleTest < matlab.unittest.TestCase properties (TestParameter) num = {1,2,'3',4,5}; end methods(Test) function testDouble(testCase,num) testCase.verifyClass(num,'double') end end end
Поскольку num
массив ячеек с пятью элементами, тестовыми результатами класса в параметрированном тестовом наборе с пятью элементами:
suite = testsuite('SampleTest');
{suite.Name}'
ans = 5×1 cell array {'SampleTest/testDouble(num=value1)'} {'SampleTest/testDouble(num=value2)'} {'SampleTest/testDouble(num=value3)'} {'SampleTest/testDouble(num=value4)'} {'SampleTest/testDouble(num=value5)'}
Когда вы задаете свойство параметризации, необходимо задать значение по умолчанию для свойства. Задайте значение по умолчанию как непустой массив ячеек или скалярную структуру по крайней мере с одним полем. MATLAB® использует значение по умолчанию, чтобы задать название и значение параметра в тестовом наборе:
Если значение свойства является массивом ячеек из символьных векторов, MATLAB генерирует названия параметра от значений в массиве ячеек. В противном случае MATLAB задает названия параметра как value1
, value2
, …, valueN
.
Если значение свойства является структурой, поля структуры представляют названия параметра, и значения структуры представляют значения параметров. Чтобы включать описательные названия параметра в набор, задайте параметры с помощью структуры вместо массива ячеек.
Можно использовать локальные функции в classdef
файлы, чтобы присвоить значения по умолчанию свойствам параметризации. Однако локальные функции должны возвратить массив ячеек или скалярную структуру.
Среда тестирования позволяет вам задать параметры на различных тестовых уровнях. Кроме того, когда вы вызываете тестовый метод класса несколькими параметрами, можно задать, как метод должен быть вызван для различных комбинаций параметров. Чтобы начать, смотрите, Создают Основной Параметрированный Тест.
Можно параметрировать тестовый класс при настройке класса, настройке метода, и протестировать уровни. Параметризация на каждом уровне требует свойств параметризации иметь определенный атрибут свойства. Например, TestClassSetup
метод может быть параметрирован с помощью свойства, заданного в properties
блокируйтесь с ClassSetupParameter
атрибут.
Эта таблица показывает различные уровни параметризации и требуемый метод и атрибуты свойства для каждого уровня.
Уровень параметризации | Определение параметризации | Доступные свойства параметризации | |
---|---|---|---|
Атрибут метода | Атрибут свойства | ||
Уровень настройки класса | TestClassSetup | ClassSetupParameter | ClassSetupParameter |
Уровень настройки метода | TestMethodSetup | MethodSetupParameter | MethodSetupParameter и ClassSetupParameter |
Протестируйте уровень | Test | TestParameter | TestParameter , MethodSetupParameter , и ClassSetupParameter |
Параметризованный метод может получить доступ к свойствам параметризации в зависимости от уровня, на котором задан метод:
Параметрированный TestClassSetup
метод может получить доступ к свойствам параметризации только с ClassSetupParameter
атрибут.
Параметрированный TestMethodSetup
метод может получить доступ к свойствам параметризации только с MethodSetupParameter
или ClassSetupParameter
атрибуты.
Параметрированный Test
метод может получить доступ к любым свойствам параметризации.
Для примера того, как параметрировать тестовый класс на разных уровнях, смотрите, Создают Усовершенствованный Параметрированный Тест.
Когда вы передаете больше чем одно свойство параметризации методу, можно использовать ParameterCombination
атрибут метода, чтобы задать, как объединены параметры. Среда тестирования вызывает метод для заданных комбинаций.
Эта таблица показывает различные стратегии комбинации параметра.
ParameterCombination Атрибут | Вызов метода |
---|---|
'exhaustive' (значение по умолчанию) | Методы вызываются для всех комбинаций значений параметров. Среда тестирования использует эту комбинацию по умолчанию, если вы не задаете |
'sequential' | Методы вызываются с соответствующими значениями от каждого параметра. Каждый параметр должен содержать то же количество значений. Например, если методу предоставляют два свойства параметризации, и каждое свойство задает три значения параметров, то среда вызывает метод три раза. |
'pairwise' | Методы вызываются для каждой пары значений параметров по крайней мере в один раз. Например, если методу предоставят три свойства параметризации, среда тестирования гарантирует, что метод вызывается для каждой комбинации значений параметров, заданных любыми двумя свойствами. По сравнению с |
Можно объединить параметры при настройке класса, настройке метода, и протестировать уровни. Например, используйте объединенные атрибуты метода TestMethodSetup, ParameterCombination = 'sequential'
задавать последовательную комбинацию параметров уровня настройки метода, заданных в properties
блокируйтесь с MethodSetupParameter
атрибут.
Для примеров того, как объединить тестовые параметры, смотрите, Создают Основной Параметрированный Тест и Создают Усовершенствованный Параметрированный Тест.
Когда вы создаете параметрированный тест, можно переопределить параметры путем введения входных параметров в основанный на классах тест. Чтобы обеспечить данные, которые заданы за пределами тестового файла, создайте Parameter
экземпляр и использование 'ExternalParameter'
опция при создании тестового набора. Для получения дополнительной информации смотрите Использование Внешние Параметры в Параметрированном Тесте.
matlab.unittest.parameters
| matlab.unittest.parameters.Parameter
| matlab.unittest.TestCase