exponenta event banner

matlab.unittest. TestSuite.fromFile

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

Создать TestSuite массив из тестового файла

Описание

пример

suite = matlab.unittest.TestSuite.fromFile(file) создает TestSuite массив из всех тестов в file. При запуске набора тестов MATLAB ® изменяет текущую папку на папку, определяющую содержимое теста, и добавляет ее в путь на время выполнения теста.

пример

suite = matlab.unittest.TestSuite.fromFile(file,s) создает TestSuite массив из всех тестов в file которые удовлетворяют условиям, заданным селектором, s.

пример

suite = matlab.unittest.TestSuite.fromFile(___,Name,Value) создает TestSuite массив с дополнительными параметрами, указанными одним или несколькими Name,Value аргументы пары. Этот синтаксис можно использовать с любым из входных аргументов предыдущих синтаксисов.

Входные аргументы

file

Абсолютный или относительный путь к тестовому файлу, определяемый как вектор символа или скаляр строки.

s

Селектор, указанный как экземпляр класса из matlab.unittest.selector пакет.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

'BaseFolder'

Имя папки, содержащей файл, определяющий тесты, указанный как строковый массив, символьный вектор или массив ячеек символьных векторов. Фильтры аргументов TestSuite элементы массива. Чтобы структура тестирования включала тест в набор, Test элемент должен содержаться в одной из базовых папок, указанных в BaseFolder. Если ни один из Test элементы соответствуют базовой папке, возвращается пустой набор тестов. Использовать подстановочный символ * для соответствия любому количеству символов. Использовать знак вопроса ? для соответствия одному символу.

'ExternalParameters'

Массив matlab.unittest.parameters.Parameter экземпляры для использования в параметризованных тестах. Платформа использует эти внешние параметры вместо соответствующих параметров, определенных в параметризованном тесте. Дополнительные сведения см. в разделе Использование внешних параметров в параметризованном тесте.

'Name'

Имя элемента набора, указанное как строковый массив, символьный вектор или массив ячеек символьных векторов. Фильтры аргументов TestSuite элементы массива. Чтобы структура тестирования включала тест в набор, Name имущества Test элемент должен соответствовать одному из имен, указанных Name. Если ни один из Test элементы имеют соответствующее имя, возвращается пустой набор тестов. Использовать подстановочный символ * для соответствия любому количеству символов. Использовать знак вопроса ? для соответствия одному символу.

'ParameterProperty'

Имя свойства класса теста, определяющего параметр, используемый элементом набора тестов, указанный как строковый массив, символьный вектор или массив ячеек символьных векторов. Фильтры аргументов TestSuite элементы массива. Чтобы структура тестирования включала тест в набор, Parameterization имущества Test элемент должен содержать хотя бы одно из имен свойств, указанных ParameterProperty. Если ни один из Test элементы имеют соответствующее имя свойства, возвращается пустой набор тестов. Использовать подстановочный символ * для соответствия любому количеству символов. Использовать знак вопроса ? соответствует одному символу.

'ParameterName'

Имя параметра, используемого элементом набора тестов, заданного как строковый массив, символьный вектор или массив ячеек символьных векторов. MATLAB генерирует имена параметров на основе свойства класса теста, определяющего параметры:

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

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

ParameterName фильтры аргументов TestSuite элементы массива. Чтобы структура тестирования включала тест в набор, Parameterization имущества Test элемент должен содержать хотя бы одно из имен параметров, указанных ParameterName. Если ни один из Test элементы имеют соответствующее имя параметра, возвращается пустой набор тестов. Использовать подстановочный символ * для соответствия любому количеству символов. Использовать знак вопроса ? для соответствия одному символу.

'ProcedureName'

Имя процедуры тестирования, указанное как строковый массив, символьный вектор или массив ячеек символьных векторов. Фильтры аргументов TestSuite элементы массива. Чтобы структура тестирования включала тест в набор, ProcedureName имущества Test элемент должен соответствовать одному из имен процедур, указанных в ProcedureName. Если ни один из Test элементы имеют соответствующее имя процедуры, возвращается пустой набор тестов. Использовать подстановочный символ * для соответствия любому количеству символов. Использовать знак вопроса ? для соответствия одному символу.

В тесте на основе класса ProcedureName - имя метода тестирования. В функциональном тесте это имя локальной функции, содержащей тест. В тесте на основе сценария это имя, сгенерированное из заголовка раздела теста. В отличие от этого, Nameимя тестовой процедуры не включает имя класса или пакета, а также информацию о параметризации.

'Superclass'

Имя класса, от которого происходит тестовый класс, указанное как строковый массив, символьный вектор или массив ячеек символьных векторов. Фильтры аргументов TestSuite элементы массива. Чтобы структура тестирования включала тест в набор, TestClass имущества Test элемент должен указывать на тестовый класс, производный от одного из классов, указанных Superclass. Если ни один из Test элементы соответствуют классу, возвращается пустой набор тестов.

'Tag'

Имя тега теста, используемого элементом набора тестов, заданного как строковый массив, символьный вектор или массив ячеек символьных векторов. Фильтры аргументов TestSuite элементы массива. Чтобы структура тестирования включала тест в набор, Tags имущества Test элемент должен содержать хотя бы одно из имен тегов, указанных Tag. Если ни один из Test элементы имеют соответствующее имя тега, возвращается пустой набор тестов. Использовать подстановочный символ * для соответствия любому количеству символов. Использовать знак вопроса ? для соответствия одному символу.

Выходные аргументы

suite

Набор тестов, указанный как matlab.unittest.Test массив.

Признаки

Statictrue

Сведения об атрибутах методов см. в разделе Атрибуты метода.

Примеры

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

Функция тестирования установки:

function res = add5(x)
% ADD5 Increment input by 5.
if ~isa(x,'numeric')
    error('add5:InputMustBeNumeric','Input must be numeric.')
end
res = x + 5;
end

TestCase класс, содержащий методы испытаний:

classdef Add5Test < matlab.unittest.TestCase
    methods (Test)
        function testDoubleOut(testCase)
            actOutput = add5(1);
            testCase.verifyClass(actOutput,'double')
        end
        function testNonNumericInput(testCase)
            testCase.verifyError(@()add5('0'),'add5:InputMustBeNumeric')
        end
    end
end

Создание набора тестов из Add5Test файл класса.

suite = matlab.unittest.TestSuite.fromFile('Add5Test.m')
result = run(suite);
Running Add5Test
..
Done Add5Test
__________

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

Класс тестирования содержит два параметризованных метода тестирования, testClass и testSize.

В командной строке создайте набор тестов из всех параметризованных методов тестирования в testZeros.m с использованием HasParameter селектор.

import matlab.unittest.TestSuite;
import matlab.unittest.selectors.HasParameter;

suite = TestSuite.fromFile('testZeros.m', HasParameter)
suite = 

  1×8 Test array with properties:

    Name
    ProcedureName
    TestClass
    BaseFolder
    Parameterization
    SharedTestFixtures
    Tags

Tests Include:
   5 Unique Parameterizations, 0 Shared Test Fixture Classes, 0 Tags.

Создание набора тестов только из тестовых элементов из testSize с использованием HasName селектор с помощью StartsWithSubstring ограничение.

import matlab.unittest.selectors.HasName;
import matlab.unittest.constraints.StartsWithSubstring;

suite = TestSuite.fromFile('testZeros.m',...
    HasName(StartsWithSubstring('testZeros/testSize')));
{suite.Name}'
ans = 

    'testZeros/testSize(outSize=s2d)'
    'testZeros/testSize(outSize=s3d)'

Набор тестов содержит два параметризованных теста из testSize способ.

Создать testZeros.m из предыдущего примера.

В командной строке создайте набор тестов из всех методов тестирования в testZeros.m с именем, начинающимся с 'testZeros/testSize'. Этот набор тестов содержит параметризованные тесты из testSize способ.

import matlab.unittest.TestSuite;

suite = TestSuite.fromFile('testZeros.m', 'Name', 'testZeros/testSize*');
{suite.Name}'
ans = 

    'testZeros/testSize(outSize=s2d)'
    'testZeros/testSize(outSize=s3d)'

Чтобы убедиться, что набор тестов состоит из тестовых элементов, связанных с одним конкретным методом тестирования, используйте fromMethod способ TestSuite.

В командной строке создайте набор тестов из всех методов тестирования в testZeros.m которые имеют имя, оканчивающееся на 'Size'.

import matlab.unittest.TestSuite;

suite = TestSuite.fromFile('testZeros.m', 'Name', '*Size');
{suite.Name}'
ans = 

    'testZeros/testDefaultSize'

Обратите внимание, что элементы из testSize методы не включены в набор тестов. Имя этих элементов содержит информацию о параметризации, поэтому она не заканчивается на 'Size'.

Создание набора тестов для всех тестов, использующих имя параметра 'double'.

suite = TestSuite.fromFile('testZeros.m', 'ParameterName', 'double');
{suite.Name}'
ans = 

    'testZeros/testClass(type=double,outSize=s2d)'
    'testZeros/testClass(type=double,outSize=s3d)'

Чтобы создать один и тот же набор тестов с помощью селекторов, используйте suite = TestSuite.fromFile('testZeros.m', HasParameter('Name','double')).

Представлен в R2013a