Запустите набор тестов
results = runtests запускает все тесты в вашей текущей папке и возвращает результаты как TestResult объект.
results = runtests( запускает набор тестов с дополнительными опциями, заданными одним или несколькими tests,Name,Value)Name,Value парные аргументы.
Создайте папку myExample в вашей текущей рабочей папке и изменении в ту папку.
В myExample папка, создайте тестовый скрипт, typeTest.m.
%% Test double class exp = 'double'; act = ones; assert(isa(act,exp)) %% Test single class exp = 'single'; act = ones('single'); assert(isa(act,exp)) %% Test uint16 class exp = 'uint16'; act = ones('uint16'); assert(isa(act,exp))
В myExample папка, создайте тестовый скрипт, sizeValueTest.m.
%% Test size exp = [7 13]; act = ones([7 13]); assert(isequal(size(act),exp)) %% Test values act = ones(42); assert(unique(act) == 1)
Запустите все тесты в текущей папке.
runtests
Running sizeValueTest
..
Done sizeValueTest
__________
Running typeTest
...
Done typeTest
__________
ans =
1x5 TestResult array with properties:
Name
Passed
Failed
Incomplete
Duration
Details
Totals:
5 Passed, 0 Failed, 0 Incomplete.
0.038077 seconds testing time.
MATLAB® запустил 5 тестов. От sizeValueTest существует 2 проходящих теста и 3 проходящих теста от typeTest.
Создайте тестовый файл, показанный ниже, и сохраните его как runtestsExampleTest.m на вашем пути MATLAB.
function tests = runtestsExampleTest tests = functiontests(localfunctions); function testFunctionOne(testCase)
Запущение тестов.
results = runtests('runtestsExampleTest.m');
Running runtestsExampleTest . Done runtestsExampleTest __________
Если это не существует, создайте тестовый файл, runtestsExampleTest.m, в примере выше.
Создайте подпапку, tmpTest, и в той папке создайте следующий runtestsExampleSubFolderTest.m файл.
function tests = runtestsExampleSubFolderTest tests = functiontests(localfunctions); function testFunctionTwo(testCase)
Запустите тесты от папки выше tmpTest установкой 'IncludeSubfolders' к истине.
results = runtests(pwd,'IncludeSubfolders',true);Running runtestsExampleTest . Done runtestsExampleTest __________ Running runtestsExampleSubFolderTest . Done runtestsExampleSubFolderTest __________
runtests запустил тесты и в текущей папке и в подпапке.
Если вы не задаете 'IncludeSubfolders' свойство для runtests функция, это не запускает тест в подпапке.
results = runtests(pwd);
Running runtestsExampleTest . Done runtestsExampleTest __________
Создайте следующий тестовый файл и сохраните его как runInParallelTest.m на вашем пути MATLAB®.
function tests = runInParallelTest tests = functiontests(localfunctions); function testA(testCase) verifyEqual(testCase,5,5); function testB(testCase) verifyTrue(testCase,logical(1)); function testC(testCase) verifySubstring(testCase,'SomeLongText','Long'); function testD(testCase) verifySize(testCase,ones(2,5,3),[2 5 3]); function testE(testCase) verifyGreaterThan(testCase,3,2); function testF(testCase) verifyEmpty(testCase,{},'Cell array is not empty.'); function testG(testCase) verifyMatches(testCase,'Some Text','Some [Tt]ext');
Запустите тесты параллельно. Запущение тестов параллельно требует Parallel Computing Toolbox™. Среда тестирования может варьироваться порядок и количество групп или который тестирует его, включает в каждую группу.
results = runtests('runInParallelTest','UseParallel',true);
Split tests into 7 groups and running them on 4 workers. ---------------- Finished Group 2 ---------------- Running runInParallelTest . Done runInParallelTest __________ ---------------- Finished Group 3 ---------------- Running runInParallelTest . Done runInParallelTest __________ ---------------- Finished Group 1 ---------------- Running runInParallelTest . Done runInParallelTest __________ ---------------- Finished Group 4 ---------------- Running runInParallelTest . Done runInParallelTest __________ ---------------- Finished Group 6 ---------------- Running runInParallelTest . Done runInParallelTest __________ ---------------- Finished Group 5 ---------------- Running runInParallelTest . Done runInParallelTest __________ ---------------- Finished Group 7 ---------------- Running runInParallelTest . Done runInParallelTest __________
В вашей рабочей папке создайте 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 методы.
В командной строке запустите всю параметризацию для testSize метод.
runtests('testZeros/testSize')
Running testZeros
..
Done testZeros
__________
ans =
1x2 TestResult array with properties:
Name
Passed
Failed
Incomplete
Duration
Details
Totals:
2 Passed, 0 Failed, 0 Incomplete.
0.041371 seconds testing time.
runtests функция выполнила два параметрированных теста от testSize метод. В качестве альтернативы можно задать имя процедуры тестирования с runtests('testZeros','ProcedureName','testSize').
Запустите тестовые элементы, которые используют outSize 'ParameterProperty' .
runtests('testZeros','ParameterProperty','outSize')
Running testZeros
........
Done testZeros
__________
ans =
1x8 TestResult array with properties:
Name
Passed
Failed
Incomplete
Duration
Details
Totals:
8 Passed, 0 Failed, 0 Incomplete.
0.059447 seconds testing time.
runtests функция выполнила восемь тестов, которые используют outSize 'ParameterProperty' : шесть от testClass метод и два от testSize метод.
Запустите тестовые элементы, которые используют single 'ParameterName' .
runtests('testZeros','ParameterName','single')
Running testZeros
..
Done testZeros
__________
ans =
1x2 TestResult array with properties:
Name
Passed
Failed
Incomplete
Duration
Details
Totals:
2 Passed, 0 Failed, 0 Incomplete.
0.010709 seconds testing time.
runtests функция выполнила два теста от testClass метод, которые используют outSize 'ParameterName' .
tests — Массив тестовНабор тестов, заданных как массив строк, вектор символов или массив ячеек из символьных векторов. Каждый вектор символов в массиве ячеек может содержать имя тестового файла, тестового класса, имени элемента тестового набора, пакет, содержащий ваши тестовые классы, папка, содержащая ваши тестовые файлы или папку проекта, содержащую тестовые файлы.
Пример: runtests('ATestFile.m')
Пример: runtests('ATestFile/aTest')
Пример: runtests('mypackage.MyTestClass')
Пример: runtests(pwd)
Пример: runtests({'mypackage.MyTestClass','ATestFile.m',pwd,'mypackage.subpackage'})
Пример: runtests('C:/projects/project1/')
Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
runtests(tests,'Name','productA_*') запуски тестируют элементы с именем, которое запускается с 'productA_'.'BaseFolder' — Имя основной папкиИмя основной папки, которая содержит файл, задающий тестовый класс, функцию или скрипт в виде массива строк, вектора символов или массива ячеек из символьных векторов. Этот аргумент фильтрует TestSuite элементы массива. Для среды тестирования, чтобы включать тест в набор, Test элемент должен содержаться в одной из основных папок, заданных BaseFolder. Если ни один из Test элементы совпадают с основной папкой, пустой тестовый набор возвращен. Используйте подстановочный символ * совпадать с любым количеством символов. Используйте символа вопросительного знака, ? совпадать с отдельным символом. Для тестовых файлов, заданных в пакетах, основная папка является родительским элементом папки пакета верхнего уровня.
'Debug' — Индикатор, чтобы применить возможности отладкиfalse (значение по умолчанию) | true| 0 | 1 Индикатор, чтобы применить возможности отладки при выполнении testsВ виде false или true(0 или 1). Например, если с непройденным тестом сталкиваются, среда приостанавливает выполнение теста, чтобы ввести режим отладки.
'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. Для получения дополнительной информации о ссылках на проекты смотрите, Разбивают на компоненты Крупные проекты.
'LoggingLevel' — Максимальный уровень многословия для регистрируемой диагностикиmatlab.unittest.Verbosity перечислениеМаксимальный уровень многословия для регистрируемой диагностики, включенной для тестового прогона в виде целочисленного значения от 0 до 4, или как matlab.unittest.Verbosity объект перечисления. runtests функция включает диагностику, которая регистрируется на этом уровне и ниже. Целочисленные значения соответствуют членам matlab.unittest.Verbosity перечисление.
По умолчанию runtests включает диагностику, регистрируемую в matlab.unittest.Verbosity.Terse уровень (уровень 1). Чтобы исключить регистрируемую диагностику, задайте LoggingLevel как Verbosity.None (уровень 0).
Регистрируемая диагностика является диагностикой, которую вы предоставляете к среде тестирования вызов log (TestCase) или log (Fixture) метод.
| Числовое представление | Имя элемента перечисления | Описание многословия |
|---|---|---|
0 | None | Никакая информация |
1 | Terse | Минимальная информация |
2 | Concise | Умеренный объем информации |
3 | Detailed | Некоторая дополнительная информация |
4 | Verbose | Большая дополнительная информация |
'OutputDetail' — Отобразите уровень для деталей событияmatlab.unittest.Verbosity перечислениеОтобразите уровень для деталей события в виде целочисленного значения от 0 до 4, или как matlab.unittest.Verbosity объект перечисления. Целочисленные значения соответствуют членам matlab.unittest.Verbosity перечисление.
runtests функционируйте сбой отображений и регистрируемые события с суммой детали, заданной OutputDetail. По умолчанию, runtests сбой отображений и регистрируемые события в matlab.unittest.Verbosity.Detailed уровень (уровень 3) и тестовый прогон прогрессирует в matlab.unittest.Verbosity.Concise уровень (уровень 2).
| Числовое представление | Имя элемента перечисления | Описание многословия |
|---|---|---|
0 | None | Никакая информация |
1 | Terse | Минимальная информация |
2 | Concise | Умеренный объем информации |
3 | Detailed | Некоторая дополнительная информация |
4 | Verbose | Большая дополнительная информация |
'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, имя процедуры тестирования не включает класса или имени пакета или информации о параметризации.
'ReportCoverageFor' — Путь к исходному коду, чтобы включать в отчет покрытия кодаПуть к исходному коду, чтобы включать в покрытие кода сообщает в виде массива строк, вектора символов или массива ячеек из символьных векторов. Используя эту опцию с runtests запускает заданные тесты и представляет отчет покрытия кода для заданных файлов кода. Отчет показывает, какие линии в исходном коде выполнялись тестами.
Исходный код может быть абсолютным или относительным путем к одной или нескольким папкам или к файлам, которые имеют .m, .mlx, или .mlapp расширение.
Пример: runtests(tests,'ReportCoverageFor','mySource.m')
Типы данных: char | string | cell
'Strict' — Индикатор, чтобы применить строгие проверкиfalse (значение по умолчанию) | true| 0 | 1 Индикатор, чтобы применить строгие проверки при выполнении testsВ виде false или true(0 или 1). Например, среда генерирует отказ проверки, если тест выдает предупреждение.
'Superclass' — Имя класса, которые тестируют класс, выводит изИмя класса, из которого выводит тестовый класс в виде массива строк, вектора символов или массива ячеек из символьных векторов. Этот аргумент фильтрует TestSuite элементы массива. Для среды тестирования, чтобы включать тест в набор, TestClass свойство Test элемент должен указать на тестовый класс, который выводит из одного из классов, заданных Superclass. Если ни один из Test элементы совпадают с классом, пустой тестовый набор возвращен.
'Tag' — Имя тестового тега элементовИмя тестового тега, используемого элементом тестового набора в виде массива строк, вектора символов или массива ячеек из символьных векторов. Этот аргумент фильтрует TestSuite элементы массива. Для среды тестирования, чтобы включать тест в набор, Tags свойство Test элемент должен содержать по крайней мере одно из имен тега, заданных Tag. Если ни один из Test элементы имеют соответствующее имя тега, пустой тестовый набор возвращен. Используйте подстановочный символ * совпадать с любым количеством символов. Используйте символа вопросительного знака, ? совпадать с отдельным символом.
'UseParallel' — Индикатор, чтобы запустить тесты параллельноfalse (значение по умолчанию) | true| 0 | 1 Индикатор, чтобы запустить тесты параллельно в виде false или true(0 или 1).
runtests по умолчанию запускает тесты в сериале. Если вы устанавливаете UseParallel к true, затем runtests делит тестовый набор на отдельные группы и запускает группы параллельно если:
Parallel Computing Toolbox установлен.
Открытый параллельный пул существует, или автоматическое создание пула включено в Параллельных Настройках.
В противном случае, runtests запускает тесты в сериале независимо от значения для UseParallel.
Тестирование параллельно не может быть совместимо с другими опциями. Например, тестирование происходит в сериале если UseParallel и Debug оба установлены в true. При выполнении параллельно, среда тестирования может варьироваться порядок и количество групп или который тестирует его, включает в каждую группу.
'GenerateBaselines' — Индикатор, чтобы создать или обновить базовые данныеfalse (значение по умолчанию) | true| 0 | 1 Индикатор, чтобы создать или обновить MAT-файл, используемый в тесте с определенными методами проверки в виде false или true(0 или 1). У вас должна быть лицензия Simulink® Test™, чтобы использовать GenerateBaselines.
Когда вы задаете этот аргумент как true, ваш тест должен использовать по крайней мере один из этих методов проверки sltest.TestCase (Simulink Test) класс:
verifySignalsMatch (например, testCase.verifySignalsMatch(actVal,'myBaseline.mat'))
assumeSignalsMatch
assertSignalsMatch
fatalAssertSignalsMatch
Для получения дополнительной информации смотрите Используя Основанные на MATLAB Тесты Simulink в менеджере по Тесту (Simulink Test).
Когда вы используете совместно использованные испытательные стенды в своих тестах и задаете вход к runtests функционируйте как массив строк или массив ячеек из символьных векторов, среда тестирования сортирует массив, чтобы уменьшать совместно использованную настройку фиксатора и операции отключения. В результате тесты могут запуститься в порядке, который отличается от порядка элементов во входном массиве. Для получения дополнительной информации смотрите sortByFixtures.
Начиная в R2020b, можно создать автономные приложения, которые поддерживают запускающие тесты параллельно (требует MATLAB Compiler™ и Parallel Computing Toolbox). Используйте направляющий %#function parallel.Pool в вашем коде так, чтобы MATLAB Compiler мог расположиться и пакет все компоненты, требуемые для того, чтобы запустить тесты параллельно. Для получения дополнительной информации смотрите Компиляцию Модульные тесты MATLAB.
Чтобы запуститься параллельно, установите 'UseParallel' опция к true.
Для более общей информации о параллельных вычислениях смотрите функции MATLAB Запуска с Автоматической Параллельной Поддержкой (Parallel Computing Toolbox).
matlab.unittest.TestResult | matlab.unittest.TestRunner | matlab.unittest.TestSuite | testsuite
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.