Запустите набор тестов
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.