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

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

Вашей тестовой функцией является один MATLAB® файл, который содержит основную функцию и ваши отдельные локальные тестовые функции. Опционально, можно включать фиксатор файла и новые функции фиксатора. File fixtures состоит из настройки и функций отключения, совместно использованных через все тесты в файле. Эти функции выполняются однажды на тестовый файл. Fresh fixtures состоит из настройки и функций отключения, которые выполняются до и после каждой локальной тестовой функции.

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

Основная функция собирает все локальные тестовые функции в тестовый массив. Имя основной функции соответствует имени вашего тестового файла и должно начинаться или заканчиваться словом 'тест', который является нечувствительным к регистру. Если имя файла не начинается или заканчивается словом 'тест', тесты в файле могут быть проигнорированы в определенных случаях. В этом демонстрационном случае файлом MATLAB является exampleTest.m. Основная функция должна позвонить functiontests сгенерировать тестовый массив, tests. Используйте localfunctions как вход к functiontests автоматически сгенерировать cell-массив указателей на функцию ко всем локальным функциям в вашем файле. Это - типичная основная функция.

function tests = exampleTest
tests = functiontests(localfunctions);
end

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

Отдельные тестовые функции включены как локальные функции в том же файле MATLAB как основная (генерирующая тест) функция. Эти тестовые имена функций должны начаться или закончиться нечувствительным к регистру словом, 'тестом'. Каждая из локальных тестовых функций должна принять один вход, который является функциональным объектом теста, testCase. Среда тестирования автоматически генерирует этот объект. Для получения дополнительной информации о создании тестовых функций смотрите Запись Простой Тест Используя Функции и Таблицу Верификаций, Утверждений и Других Проверок. Это - типичный пример скелетных функций локального теста.

function testFunctionOne(testCase)
% Test specific code
end

function testFunctionTwo(testCase)
% Test specific code
end

Создание дополнительных функций фиксатора

Setup и код отключения, также называемый функциями испытательного стенда, настраивают предварительное состояние системы и возвращают его в исходное состояние после запущения теста. Существует два типа этих функций: функции фиксатора файла, которые запускаются однажды на тестовый файл и новые функции фиксатора, которые запускаются до и после каждой локальной тестовой функции. Эти функции не требуются, чтобы генерировать тесты. В общем случае желательно использовать новые фиксаторы по фиксаторам файла, чтобы увеличить инкапсуляцию модульного теста.

Функциональный объект теста, testCase, должен быть единственный вход, чтобы зарегистрировать фиксатор и новые функции фиксатора. Среда тестирования автоматически генерирует этот объект. TestCase объект является средними значениями, чтобы передать информацию между функциями настройки, тестовыми функциями и функциями отключения. Его TestData свойством является, по умолчанию, struct, который позволяет легкое сложение полей и данных. Типичное использование для этого тестовые данные включает пути и графические указатели. Для примера с помощью TestData свойство, смотрите, что Тест записи Использует Функции Отключения и Setup.

Функции Фиксатора файла.  Используйте функции фиксатора файла, чтобы совместно использовать настройку и функции отключения через все тесты в файле. Именами для функций фиксатора файла должен быть 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. Для каждого теста результат содержит имя тестовой функции, передало ли это, отказавший, или не завершалось, и время, это исполнилось тест. Для получения дополнительной информации см. Анализ результатов теста и Анализ результатов непройденных тестов.

Смотрите также

| |

Похожие темы