Запустите набор тестов
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 тестов. Есть 2 проходящих теста от sizeValueTest и 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' к true.
results = runtests(pwd,'IncludeSubfolders',true);Running runtestsExampleTest . Done runtestsExampleTest __________ Running runtestsExampleSubFolderTest . Done runtestsExampleSubFolderTest __________
runtests запустил тесты как в текущей папке, так и в подпапке.
Если вы не задаете 'IncludeSubfolders' свойство для runtests функция, она не запускает тест в подпапке.
results = runtests(pwd);
Running runtestsExampleTest . Done runtestsExampleTest __________
Когда ваша текущая папка является корневой папкой проекта или когда вы передаете полный путь к корневой папке проекта в runtests функция, runtests запускает все тестовые файлы, содержащиеся в указанном проекте, которые помечены Test классификация.
Этот пример принимает, что папка проекта в C:/projects/project1 содержит тестовые файлы, которые помечены Test классификация. Измените текущую папку в корневую папку проекта и запустите тесты в проекте.
cd 'C:/projects/project1/'
runtests
Также можно запустить тесты путем открытия project1. Закройте проект, когда вы закончите.
proj = openProject('C:/projects/project1/');
runtests
close(proj)
В качестве другой альтернативы запустите тесты в проекте, передав полный путь в корневую папку проекта, в runtests.
runtests('C:/projects/project1/')
Создайте следующий тестовый файл и сохраните его как 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.036647 seconds testing time.
The runtests функция выполнила два параметризованных теста из testSize способ. Кроме того, имя процедуры тестирования можно задать с помощью runtests('testZeros','ProcedureName','testSize').
Запустите тестовые элементы, которые используют outSize свойство параметра.
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.051305 seconds testing time.
The runtests функция выполнила восемь тестов, которые используют outSize свойство параметра: шесть из testClass метод и два из testSize способ.
Запустите тестовые элементы, которые используют single имя параметра.
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.009638 seconds testing time.
The runtests функция выполнила два теста от testClass метод, который использует outSize имя параметра.
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' - Имя параметраИмя параметра, используемого элементом test suite, заданное как строковые массивы, вектор символов или массив ячеек векторов символов. MATLAB генерирует имена параметров на основе свойства test class, которое определяет параметры:
Если значение свойства является массивом ячеек из векторов символов, MATLAB генерирует имена параметров из значений в массиве ячеек. В противном случае MATLAB задает имена параметров следующим value1, value2, …, valueN.
Если значение свойства является структурой, MATLAB генерирует имена параметров из полей структуры.
The 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.
Открытый параллельный пул существует или автоматическое создание пула включено в параметрах Parallel Preferences.
В противном случае 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».
Начиная с R2021a, можно запустить тесты в пуле на основе потоков (требует Parallel Computing Toolbox), запустив параллельный пул рабочих потоков и затем вызвав runtests функция со UseParallel аргумент пары "имя-значение".
Тесты для запуска runtests в пуле на основе потоков распространяются следующие ограничения:
Ваш тест и исходный код должны использовать только функциональность, поддерживаемую работниками потоков. Дополнительные сведения об ограничениях окружения на основе потоков см. в разделе Выбор между окружениями на основе потоков и процессами (Parallel Computing Toolbox).
Папка, определяющая содержание теста, должна находиться в пути поиска файлов MATLAB.
Имена тестов должны быть заданы с помощью имен классов или функций, без расширений файлов.
Хранение тестовых программных продуктов не поддерживается в пуле на основе потоков.
Simulink не поддерживается в окружении, основанной на потоках. Поэтому тесты, созданные с помощью Simulink Test, не могут выполняться в пуле на основе потоков.
Чтобы запустить параллельно, установите 'UseParallel' опция для true.
Для получения дополнительной общей информации о параллельных вычислениях смотрите Запуск функций MATLAB с поддержкой автоматических параллелей (Parallel Computing Toolbox).
matlab.unittest.TestResult | matlab.unittest.TestRunner | matlab.unittest.TestSuite | testrunner | testsuite
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.