Ваша тестовая функция является одной MATLAB® файл, который содержит основную функцию и ваши отдельные локальные тестовые функции. Опционально можно включать файл фиксатора и свежие функции фиксатора. File fixtures состоят из функций настройки и отключения, общих для всех тестов в файле. Эти функции выполняются один раз на каждый тестовый файл. Fresh fixtures состоят из функций настройки и отключения, которые выполняются до и после каждой локальной тестовой функции.
Основная функция собирает все локальные тестовые функции в тестовый массив. Имя основной функции соответствует наименованию вашего тестового файла и должно начинаться или заканчиваться словом 'test', которое не чувствительно к регистру. Если имя файла не начинается или заканчивается словом 'test', тесты в файле могут быть проигнорированы в определенных случаях. В этом примере файл MATLAB exampleTest.m
. Основная функция должна сделать вызов к functiontests
чтобы сгенерировать тестовый массив, tests
. Использование localfunctions
как вход в functiontests
чтобы автоматически сгенерировать cell-массив указателей на функцию для всех локальных функций в вашем файле. Это типичная основная функция.
function tests = exampleTest tests = functiontests(localfunctions); end
Отдельные тестовые функции включены в качестве локальных функций в тот же файл MATLAB, что и основная (генерирующая тест) функция. Эти тестовые имена функции должны начинаться или заканчиваться без учета регистра словом «test». Каждая из локальных тестовых функций должна принимать один вход, который является объектом теста функции testCase
. Среда тестирования автоматически генерирует этот объект. Для получения дополнительной информации о создании тестовых функций смотрите Запись простого теста с использованием функций и Таблица верификаций, утверждений и других проверок. Это типичный пример функций локального тестирования скелета.
function testFunctionOne(testCase) % Test specific code end function testFunctionTwo(testCase) % Test specific code end
Setup и код отключения, также называемый испытательным стендом функциями, настраивают предварительное состояние системы и возвращают его в исходное состояние после выполнения теста. Существует два типа этих функций: функции фиксатор, которые запускаются один раз на тестовый файл, и свежие функции fixture, которые запускаются до и после каждой локальной тестовой функции. Эти функции не требуются для генерации тестов. В целом предпочтительно использовать свежие фиксаторы по сравнению с файлом фиксаторов для увеличения инкапсуляции модульного теста.
Объект теста функции, testCase
, должен быть единственным входом в фиксатор и свежие функции фиксатора. Среда тестирования автоматически генерирует этот объект. The TestCase
объект является средством для передачи информации между функциями настройки, тестовыми функциями и функциями отключения. Его TestData
свойство является, по умолчанию, struct
, что позволяет легко добавлять поля и данные. Типичное использование этих тестовых данных включает пути и графические указатели. Для примера использование TestData
свойство, см. «Запись теста с использованием функций Setup и Teardown».
Функции Фиксатор. Используйте функции фиксатор для совместного использования функций настройки и отключения во всех тестах в файле. Имена функций файла фиксатора должны быть setupOnce
и teardownOnce
, соответственно. Эти функции выполняют одно время для каждого файла. Можно использовать файл фиксаторов, чтобы задать путь перед проверкой, а затем сбросить его к исходному пути после проверки. Это типичный пример настройки скелетного файла и кода отключения.
function setupOnce(testCase) % do not change function name % set a new path, for example end function teardownOnce(testCase) % do not change function name % change back to original path, for example end
Свежие функции фиксатора. Используйте свежие функции фиксатора, чтобы настроить и разорвать состояния для каждой локальной функции тестирования. Имена для этих свежих функций фиксатора должны быть setup
и teardown
, соответственно. Можно использовать свежие фиксаторы, чтобы получить новый рисунок перед тестированием и закрыть рисунок после проверки. Это типичный пример настройки уровня функции скелетного тестирования и кода отключения.
function setup(testCase) % do not change function name % open a figure, for example end function teardown(testCase) % do not change function name % close figure, for example end
%% Main function to generate tests function tests = exampleTest tests = functiontests(localfunctions); end %% Test Functions function testFunctionOne(testCase) % Test specific code end function testFunctionTwo(testCase) % Test specific code end %% Optional file fixtures function setupOnce(testCase) % do not change function name % set a new path, for example end function teardownOnce(testCase) % do not change function name % change back to original path, for example end %% Optional fresh fixtures function setup(testCase) % do not change function name % open a figure, for example end function teardown(testCase) % do not change function name % close figure, for example end
Когда вы запускаете функциональные тесты, среда тестирования выполняет следующие задачи:
Создайте массив тестов, заданных локальными тестовыми функциями.
Если на setupOnce
задана функция, установите предварительное состояние системы путем запуска функции.
Для каждого теста запустите соответствующую локальную тестовую функцию. Если на setup
функция задана, запустите ее перед запуском локальной тестовой функции. Если на teardown
функция задана, запустите ее после запуска локальной тестовой функции.
Если на teardownOnce
задается, возвращает предварительное состояние системы в исходное состояние путем выполнения функции.
Чтобы запустить тесты из командной строки, используйте runtests
функция с тестовым файлом MATLAB в качестве входных данных. Для примера:
results = runtests('exampleTest.m')
Также можно запустить тесты с помощью run
функция.
results = run(exampleTest)
Для получения дополнительной информации о выполнении тестов см. runtests
и Запуск тестов для различных рабочих процессов.
Чтобы проанализировать результаты теста, исследуйте структуру output из runtests
или run
. Для каждого теста результат содержит имя тестовой функции, прошла ли она, не прошла ли она или не завершилась, и время, необходимое для запуска теста. Для получения дополнительной информации смотрите Анализ результатов теста и Анализ результатов неудачного тестирования.
functiontests
| localfunctions
| runtests