exponenta event banner

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

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

Тестовая функция представляет собой отдельный файл MATLAB ®, содержащий основную функцию и отдельные локальные тестовые функции. При необходимости можно включить файловое приспособление и новые функции приспособления. Файловые приспособления состоят из функций настройки и разрыва, общих для всех тестов в файле. Эти функции выполняются один раз для каждого тестового файла. Свежие приспособления состоят из функций настройки и отрыва, которые выполняются до и после каждой локальной тестовой функции.

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

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

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

Создание функций локального тестирования

Отдельные тестовые функции включаются как локальные функции в тот же файл MATLAB, что и основная (генерирующая тест) функция. Эти имена тестовых функций должны начинаться или заканчиваться не учитывающим регистр словом «test». Каждая из локальных тестовых функций должна принимать один вход, который является объектом тестового случая функции, testCase. Структура тестирования автоматически генерирует этот объект. Дополнительные сведения о создании тестовых функций см. в разделе Создание простого тестового случая с использованием функций и таблицы проверок, утверждений и других квалификаций. Это типичный пример скелетных функций локального тестирования.

function testFunctionOne(testCase)
% Test specific code
end

function testFunctionTwo(testCase)
% Test specific code
end

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

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

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

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

Workflow for running function-based tests

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

results = runtests('exampleTest.m')

Кроме того, можно выполнить тесты с помощью run функция.

results = run(exampleTest)

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

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

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

См. также

| |

Связанные темы