Запустите набор тестов
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 __________
Когда ваша текущая папка является корневой папкой проекта или когда вы передаете полный путь корневой папке проекта к 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.
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.051305 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.009638 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.
Начиная в R2021a, можно запустить тесты на основанном на потоке пуле (требует Parallel Computing Toolbox) путем запуска параллельного пула рабочих потока и затем вызова runtests
функция с UseParallel
аргумент пары "имя-значение".
Тесты, чтобы запуститься с runtests
на основанном на потоке пуле подвергаются этим ограничениям:
Ваш тестовый и исходный код должен использовать только функциональность, поддержанную рабочими потока. Для получения дополнительной информации об ограничениях основанной на потоке среды, смотрите, Выбирают Between Thread-Based и Process-Based Environments (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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.