Чтобы помочь разработке программного обеспечения и контролировать регрессии в функциональности кода, можно написать модульные тесты для своих программ. MATLAB® среда модульного тестирования поддерживает три схемы разработки тестов:
Модульные тесты на основе скриптов: Запишите каждый модульный тест как отдельный раздел файла тестового скрипта. Можно выполнить базовые проверки, получить доступ к диагностике, которую среда записывает в результаты тестирования, уточнить тестовый набор путем выбора тестов, которые вы хотите запустить, и настроить тестовый запуск путем создания и настройки TestRunner
объект.
Функциональные модульные тесты: Запишите каждый модульный тест как локальную функцию в файле тестовой функции. Функциональные тесты подписаны на философию проверки xUnit. В дополнение к поддержке функциональности, обеспечиваемой основанными на скриптах тестами, функциональные тесты дают вам доступ к богатому набору функций разработки тестов. Для примера можно использовать расширенные функции проверки, включая ограничения, допуски и диагностический тест.
Основанные на классах модульные тесты: Записывайте каждый модульный тест как Test
метод в файле определения класса. В дополнение к поддержке функциональности, предоставляемой основанными на скриптах и функциях тестами, основанные на классах, предоставляют вам несколько расширенных функций разработки тестов и предоставляют вам доступ к полной функциональности среды. Для примера можно использовать общие испытательные стенды, параметризировать тесты и повторно использовать содержание теста.
С помощью основанных на скриптах тестов вы можете:
Задайте переменные для совместного использования между тестами или предусловиями, необходимыми для тестов.
Выполните основные проверки с помощью assert
функция. Для примера можно использовать assert(isequal(actVal,expVal))
утверждать, что фактические и ожидаемые значения равны. (Расширенные функции проверки поддерживаются только для функциональных и основанных на классах тестов.)
Доступ к диагностическому тесту, записанной средой. Для получения дополнительной информации см. «Программный доступ к диагностическому тесту». (Расширенные действия диагностики поддерживаются только для функциональных и основанных на классах тестов.)
Обычно с тестами на основе скриптов вы создаете тестовый файл и передаете имя файла в runtests
функция без явного создания набора Test
элементы. Если вы создаете явный тестовый набор (используя testsuite
функция или метод matlab.unittest.TestSuite
класс), существуют дополнительные функции, доступные при проверке на основе скриптов. С явным тестовым набором можно:
Уточните свой набор, например, используя классы в matlab.unittest.selectors
пакет. (Несколько селекторов применяются только для основанных на классах тестов.)
Создайте TestRunner
объект и настройте его, чтобы запустить ваши тесты. Можно добавить классы плагинов в matlab.unittest.plugins
упаковать в исполнитель тестов.
Для получения дополнительной информации о тестах, основанных на скриптах, см. «Запись модульных тестов на основе скриптов» и «Расширение основанных на скриптах тестов».
Функциональные тесты поддерживают функциональность, обеспечиваемую основанными на скриптах тестами. В сложение с функциональными тестами можно:
Настройте предварительное состояние системы и верните ее в исходное состояние после выполнения теста. Можно выполнять эти задачи один раз за тестовый файл или один раз за модульный тест. Для получения дополнительной информации смотрите Запись теста с использованием функций Setup и Teardown.
Используйте классы фиксаторов в matlab.unittest.fixtures
пакет (с applyFixture
метод) для обработки настройки и отключения часто используемых тестовых действий.
Запись диагностической информации на определенный уровень подробностей при помощи log
способ.
Используйте полную библиотеку проверок в matlab.unittest.qualifications
пакет. Чтобы определить, какую проверку использовать, смотрите Таблицу верификаций, утверждений и других квалификаций.
Используйте расширенные функции проверки, включая ограничения, фактическое значение прокси, допуски и диагностический тест. Можно использовать классы в matlab.unittest.constraints
и matlab.unittest.diagnostics
пакеты в ваших проверках.
Для получения дополнительной информации о функциональных тестах, см., Запись функциональных модульных тестов и Расширение функциональных тестов.
Основанные на классах тесты поддерживают функциональность, обеспечиваемую основанными на скриптах и основанными на функциях тестами. В сложение с основанными на классах тестами можно:
Используйте блоки метода настройки и отключения, чтобы неявно настроить состояние окружения pretest и вернуть его в исходное состояние после запуска тестов. Для получения дополнительной информации см. Раздел «Setup записи и отключение кода с использованием классов».
Совместное использование фиксаторов между классами. Для получения дополнительной информации см. Раздел «Запись тестов с использованием общих фиксаторов».
Сгруппируйте тесты в категории и запустите тесты с указанными тегами. Для получения дополнительной информации см. Раздел «Модульные тесты тегов».
Напишите параметризованные тесты, чтобы объединить и выполнить тесты в заданных списках параметров. Для получения дополнительной информации смотрите Использование параметров в основанных на классах тестах.
Используйте подклассы и наследование для совместного использования и повторного использования содержания теста. Для примера можно повторно использовать параметры и методы, определенные в тестовом классе, путем деривации подклассов. Для получения дополнительной информации смотрите Иерархии классов - Концепции.
Для получения дополнительной информации об основанных на классах тестах см. Создание модульных тестов на основе классов в MATLAB.
Среда модульного тестирования предоставляет авторам тестовых инструментов возможность расширения записи тестов с помощью пользовательских ограничений, диагностики, фиксаторов и плагинов. Например, можно создать пользовательский плагин и использовать его для расширения исполнителя тестов, когда вы запускаете основанные на скриптах, основанные на функциях или основанные на классах модульные тесты. Для получения дополнительной информации см. Раздел «Расширение среды модульного тестирования».