testsuite

Создайте набор тестов

Описание

пример

suite = testsuite создает набор тестов из текущей папки и возвращает пакет как Test массив.

Чтобы запустить тестовый набор, созданный с testsuite, используйте run метод matlab.unittest.TestSuite, matlab.unittest.TestRunner, или matlab.perftest.TimeExperiment.

suite = testsuite(tests) создает пакет из набора заданных тестов.

пример

suite = testsuite(tests,Name,Value) создает набор тестов с дополнительными опциями, заданными одним или несколькими Name,Value аргументы в виде пар.

Примеры

свернуть все

Создайте папку myExample в текущей рабочей папке сделайте ее текущей рабочей папкой и создайте пару тестов.

В myExample папка, создайте тест на основе скриптов, onesTest.m.

%% Test double class
expClass = 'double';
act = ones;
assert(isa(act,expClass))

%% Test single class
expClass = 'single';
act = ones('single');
assert(isa(act,expClass))

%% Test uint16 class
expClass = 'uint16';
act = ones('uint16');
assert(isa(act,expClass))

%% Test size
expSize = [7 13];
act = ones([7 13]);
assert(isequal(size(act),expSize))

%% Test values
act = ones(42);
assert(unique(act) == 1)

В myExample папка, создайте тест на основе функций, eyeTest.m.

function tests = eyeTest
tests = functiontests(localfunctions);

function doubleClassTest(testCase)
actValue = eye;
verifyClass(testCase,actValue,'double')

function singleClassTest(testCase)
actValue = eye('single');
verifyClass(testCase,actValue,'single')

function uint16ClassTest(testCase)
actValue = eye('uint16');
verifyClass(testCase,actValue,'uint16')

function sizeTest(testCase)
expSize = [7 13];
actValue = eye(expSize);
verifySize(testCase,actValue,expSize);

function valueTest(testCase)
actValue = eye(42);
verifyEqual(testCase,unique(diag(actValue)),1)    % diagonal are 1s
verifyEqual(testCase,unique(triu(actValue,1)),0)  % upper tri vals are 0
verifyEqual(testCase,unique(tril(actValue,-1)),0) % lower tri vals are 0

Создайте тестовый набор из всех тестов в текущей папке.

suite = testsuite
suite = 

  1×10 Test array with properties:

    Name
    BaseFolder
    ProcedureName
    SharedTestFixtures
    Parameterization
    Tags

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

Если onesTest и eyesTest являются единственными тестами в вашей папке, MATLAB® создает набор из 10 тестов.

Просмотрите имена тестов в suite.

{suite.Name}'
ans = 

    'eyeTest/doubleClassTest'
    'eyeTest/singleClassTest'
    'eyeTest/uint16ClassTest'
    'eyeTest/sizeTest'
    'eyeTest/valueTest'
    'onesTest/TestDoubleClass'
    'onesTest/TestSingleClass'
    'onesTest/TestUint16Class'
    'onesTest/TestSize'
    'onesTest/TestValues'

Создайте тестовый набор из всех тестов в eyeTest.

suite2 = testsuite('eyeTest')
suite2 = 

  1×5 Test array with properties:

    Name
    BaseFolder
    ProcedureName
    SharedTestFixtures
    Parameterization
    Tags

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

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

В полном тестовом наборе 11 тестовых элементов: 6 от testClass метод, 2 из testSize метод и по 1 из testDefaultClass, testDefaultSize, и testDefaultValue методы.

Создайте тестовый набор из тестовых элементов с тестовыми именами, которые содержат 'Default'.

suite = testsuite('testZeros','Name','*Default*')
suite = 

  1x3 Test array with properties:

    Name
    ProcedureName
    TestClass
    BaseFolder
    Parameterization
    SharedTestFixtures
    Tags

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

Создайте тестовый набор из тестовых элементов, которые используют outSize свойство параметра.

suite = testsuite('testZeros','ParameterProperty','outSize')
suite = 

  1x8 Test array with properties:

    Name
    ProcedureName
    TestClass
    BaseFolder
    Parameterization
    SharedTestFixtures
    Tags

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

Тестовый набор содержит восемь тестов, в которых используется outSize свойство параметра: шесть из testClass метод и два из testSize способ.

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

свернуть все

Набор тестов, заданных в виде строковых массивов, вектора символов или массива векторов символов ячеек. Каждый символьный вектор в массиве ячеек может содержать имя тестового файла, тестового класса, имя тестового набора элемента, пакет, содержащий ваши тестовые классы, папку, содержащую ваши тестовые файлы или папку проекта, содержащую тестовые файлы.

Пример: testsuite('myTestFile.m')

Пример: testsuite('myTestFile/aTest')

Пример: testsuite('mypackage.MyTestClass')

Пример: testsuite(pwd)

Пример: testsuite({'mypackage.MyTestClass','myTestFile.m',pwd,'mypackage.subpackage'})

Пример: testsuite('C:/projects/project1/')

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

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

Пример: suite = testsuite(tests,'Name','productA_*') создает тестовый набор из tests которые имеют имена, начинающиеся с 'productA_'.

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

Индикатор для включения тестов в подпапки в наборе, указанный как false или true (0 или 1). По умолчанию среда создает набор из тестов в заданных папках, а не в их подпапках.

Типы данных: logical

Индикатор для включения тестов в подпакеты в наборе, указанный как false или true (0 или 1). По умолчанию среда создает набор из тестов в указанном пакете, а не в их подпакетах.

Типы данных: logical

Индикатор для включения тестов из ссылок на проекты, заданный как false или true. Для получения дополнительной информации о ссылках на проекты см. Раздел «Компонентизация крупных проектов».

Типы данных: logical

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

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

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

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

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

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

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

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

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

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

Подробнее о

свернуть все

Создайте тестовый набор из файлов MLDATX

Вы можете использовать testsuite функция для создания тестового набора из файла MLDATX (требует Simulink® Test™). Для примера, suite = testsuite('myTestFile.mldatx') создает набор из тестов, заданных в файле myTestFile.mldatx.

Когда вы задаете файл MLDATX, testsuite создает набор, включая все тесты в файле. Вы не можете инструктировать testsuite для создания набора из определенных тестов в файле MLDATX.

Совет

  • Если вам не нужно явно создавать тестовый набор, используйте runtests или runperf чтобы создать набор неявно перед запуском тестов.

  • Альтернативным способом создать явный тестовый набор является использование matlab.unittest.TestSuite методы.

  • Когда вы задаете вход в testsuite функция как строковые массивы или массив ячеек векторов символов (для примера, suite = testsuite(["Test1","Test2"])), среда тестирования сортирует массив, чтобы уменьшить общие операции настройки испытательного стенда и отключения. В результате тесты могут выполняться в порядке, отличном от порядка элементов в массиве входа.

    Чтобы применить порядок тестового запуска, создайте набор с помощью нескольких вызовов для testsuite. Для примера, чтобы убедиться, что тесты, заданные Test1 запускается перед тестами, заданными Test2, используйте следующий синтаксис:

    suite = [testsuite("Test1") testsuite("Test2")]
    

Введенный в R2016a