Запись функциональных модульных тестов

Создайте тестовую функцию

Ваша тестовая функция является одной 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

Запуск тестов

Когда вы запускаете функциональные тесты, среда тестирования выполняет следующие задачи:

  1. Создайте массив тестов, заданных локальными тестовыми функциями.

  2. Если на setupOnce задана функция, установите предварительное состояние системы путем запуска функции.

  3. Для каждого теста запустите соответствующую локальную тестовую функцию. Если на setup функция задана, запустите ее перед запуском локальной тестовой функции. Если на teardown функция задана, запустите ее после запуска локальной тестовой функции.

  4. Если на teardownOnce задается, возвращает предварительное состояние системы в исходное состояние путем выполнения функции.

Workflow for running function-based tests

Чтобы запустить тесты из командной строки, используйте runtests функция с тестовым файлом MATLAB в качестве входных данных. Для примера:

results = runtests('exampleTest.m')

Также можно запустить тесты с помощью run функция.

results = run(exampleTest)

Для получения дополнительной информации о выполнении тестов см. runtests и Запуск тестов для различных рабочих процессов.

Анализ результатов

Чтобы проанализировать результаты теста, исследуйте структуру output из runtests или run. Для каждого теста результат содержит имя тестовой функции, прошла ли она, не прошла ли она или не завершилась, и время, необходимое для запуска теста. Для получения дополнительной информации смотрите Анализ результатов теста и Анализ результатов неудачного тестирования.

См. также

| |

Похожие темы