Создание набора тестов
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 способ.
tests - Массив тестовНабор тестов, указанный как строковый массив, символьный вектор или массив ячеек символьных векторов. Каждый вектор символов в массиве ячеек может содержать имя тестового файла, тестовый класс, имя элемента тестового набора, пакет, содержащий тестовые классы, папку, содержащую тестовые файлы, или папку проекта, содержащую тестовые файлы.
Пример: 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_'.'BaseFolder' - Имя базовой папкиИмя базовой папки, содержащей файл, определяющий тестовый класс, функцию или сценарий, указанный как строковый массив, символьный вектор или массив ячеек символьных векторов. Фильтры аргументов TestSuite элементы массива. Чтобы структура тестирования включала тест в набор, Test элемент должен содержаться в одной из базовых папок, указанных в BaseFolder. Если ни один из Test элементы соответствуют базовой папке, возвращается пустой набор тестов. Использовать подстановочный символ * для соответствия любому количеству символов. Использовать знак вопроса ? для соответствия одному символу. Для тестовых файлов, определенных в пакетах, базовая папка является родительской папкой пакета верхнего уровня.
'IncludeSubfolders' - Индикатор для включения тестов во вложенные папкиfalse (по умолчанию) | true | 0 | 1Индикатор для включения тестов во вложенные папки в наборе, указанный как false или true (0 или 1). По умолчанию платформа создает набор из тестов в указанных папках, а не во вложенных папках.
Типы данных: logical
'IncludeSubpackages' - Индикатор для включения тестов в подпакетыfalse (по умолчанию) | true | 0 | 1Индикатор для включения тестов в подпакеты в наборе, указанный как false или true (0 или 1). По умолчанию платформа создает набор из тестов в указанном пакете, а не в их подпакетах.
Типы данных: logical
'IncludeReferencedProjects' - Индикатор для включения тестов из ссылочных проектовfalse (по умолчанию) | true | 0 | 1Индикатор для включения тестов из ссылочных проектов, указанный как false или true. Дополнительные сведения о проектах, на которые имеются ссылки, см. в разделе Компонентные крупные проекты.
Типы данных: logical
'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 элементы имеют соответствующее имя тега, возвращается пустой набор тестов. Использовать подстановочный символ * для соответствия любому количеству символов. Использовать знак вопроса ? для соответствия одному символу.
Вы можете использовать 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")]
matlab.unittest.TestSuite | run (TestRunner) | run (TestSuite) | run (TimeExperiment) | runtests | testrunner
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.