Создайте набор тестов
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 'ParameterProperty' .
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 'ParameterProperty' : шесть от 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). По умолчанию среда создает набор из тестов в заданных папках а не в их подпапках.
Типы данных: логический
IncludeSubpackages — Индикатор, чтобы включать тесты в подпакетыfalse (значение по умолчанию) | true| 0 | 1 Индикатор, чтобы включать тесты в подпакеты в наборе в виде false или true(0 или 1). По умолчанию среда создает набор из тестов в заданном пакете а не в их подпакетах.
Типы данных: логический
IncludeReferencedProjects — Индикатор, чтобы включать тесты от ссылок на проектыfalse (значение по умолчанию) | true| 0 | 1 Индикатор, чтобы включать тесты от ссылок на проекты в виде false или true. Для получения дополнительной информации о ссылках на проекты смотрите, Разбивают на компоненты Крупные проекты.
Типы данных: логический
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")]
Поведение изменяется в R2021b
Запуск в R2021b, если вы запускаете MATLAB без Java® Программное обеспечение Virtual Machine (JVM™) и создает набор из тестовых файлов в использовании проекта testsuite, функция использует matlab.unittest.TestSuite.fromProject метод, чтобы создать набор. Если вы затем пытаетесь запустить тестовый набор без программного обеспечения JVM, MATLAB производит ошибку, потому что проект не может быть открыт без программного обеспечения JVM. В предыдущих релизах, когда MATLAB запускается без программного обеспечения JVM, testsuite использование matlab.unittest.TestSuite.fromFolder создать набор из тестовых файлов в проекте и среду тестирования запускает получившийся тестовый набор.
Это изменение поведения также применяется runtests и runperf функции, когда они работают с кодом, организованным в файлы и папки в рамках проекта.
matlab.unittest.TestSuite | run (TestSuite) | run (TestRunner) | run (TimeExperiment) | runtests | testrunner
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.