exponenta event banner

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 элементы имеют соответствующее имя свойства, возвращается пустой набор тестов. Использовать подстановочный символ * для соответствия любому количеству символов. Использовать знак вопроса ? соответствует одному символу.

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

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

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

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