test harness является схемой блока модели, которую можно использовать для теста, редактирования, или отладить модель Simulink®. В основной модели вы сопоставляете обвязку с компонентом модели или моделью верхнего уровня. Тестовая обвязка содержит отдельное рабочее пространство модели и конфигурацию модели. Тестовая обвязка сопоставлена с основной моделью и может быть получена доступ через холст модели.
Когда вы создаете внешнюю обвязку, XML-файл метаданных также создается. XML-файл содержит уникальный идентификатор модели проекта, которая обеспечивает ассоциацию между моделью и ее обвязкой. Файл метаданных не должен быть в той же папке как модель, пока они находятся оба на пути MATLAB®.
Вы создаете модель тестовой обвязки вокруг компонента под тестом, который соединяет обвязку с основной моделью. Если вы редактируете компонент под тестом в обвязке, основные обновления модели, когда вы закрываете обвязку. Можно сгенерировать тестовую обвязку для:
Компонент модели, такой как подсистема, библиотечный блок, блок Subsystem Reference или блок Model. Тестовая обвязка изолирует компонент в отдельной среде симуляции.
Модель верхнего уровня. Компонент под тестом является блоком Model, ссылающимся на основную модель. Можно также создать тестовую обвязку в модели подсистемы.
Когда вы сопоставляете тестовую обвязку с компонентом модели, рабочая область модели тестовой обвязки содержит копии параметров, сопоставленных с компонентом. Например, предположите, что вы создаете тестовую обвязку для компонента, который содержит блок Gain, и затем добавьте второй блок Gain в обвязку.
g параметра задает часть компонента под тестом, таким образом, рабочая область модели тестовой обвязки содержит копию g.
a параметра задает часть основной модели за пределами компонента под тестом, таким образом, рабочая область модели тестовой обвязки не содержит копию a.
h параметра является усилением блока Gain, который вы добавили в обвязку. Поскольку этот блок находится вне компонента под тестом, h существует только в рабочей области модели тестовой обвязки.
Когда вы сопоставляете обвязку с верхним уровнем основной модели, рабочая область модели тестовой обвязки не содержит копии параметров, относящихся к компоненту. Компонент под тестом является блоком Model, который ссылается на основную модель, таким образом, параметры остаются в основном рабочем пространстве модели. Например, предположите, что вы создаете тестовую обвязку для модели верхнего уровня, которая содержит блок Gain, и затем добавьте второй блок Gain в обвязку.
Компонент под тестом ссылается на основную модель и параметр, g существует в основном рабочем пространстве модели. Рабочая область модели тестовой обвязки не содержит копию g.
h параметра является усилением блока Gain, который вы добавили в обвязку. Поскольку этот блок находится вне компонента под тестом, h существует только в рабочей области модели тестовой обвязки.
Параметры в тестовой обвязке решают к самой локальной рабочей области. Параметры решают к рабочей области модели тестовой обвязки, затем рабочая область системной модели, затем основное рабочее пространство MATLAB.
Можно создать тестовую обвязку для этих типов компонентов модели:
Блоки Model Reference
Блоки Ссылки подсистемы
Блоки Subsystem
Допускающие повторное использование подсистемы библиотеки, которые имеют функциональные интерфейсы и являются на верхнем уровне библиотеки
Блоки Stateflow®, включая диаграммы Stateflow, блоки Truth Table, блоки State Transition Table и блоки Test Sequence
Блоки C Caller
MATLAB блоки Function
Пользовательские функциональные блоки
Откройте только одну тестовую обвязку за один раз для каждой модели Simulink.
Не комментируйте компонент под тестом в тестовой обвязке. Комментирование компонента под тестом может вызвать неожиданное поведение.
Если подсистема имеет тестовую обвязку, вы не можете расширить содержимое подсистемы в модель, которая содержит подсистему. Удалите тестовую обвязку прежде, чем расширить подсистему. Для получения дополнительной информации смотрите, Расширяют Содержимое Подсистемы.
Тестовые обвязки присоединяются к моделям Subsystem:
Всегда синхронизируйтесь с базовой моделью
Создаются без компиляции
Не поддерживайте коллбэки постсборки
Не поддерживайте режим верификации SIL/PIL
Не делайте автоматических входных параметров формы
Блоки Subsystem Reference синхронизируют свои параметры блоков, но не свое содержимое блока.
Если ваша тестовая обвязка содержит блок To Workspace, основная переменная не сохранена в базовом рабочем пространстве после того, как тест закончил запускаться. После тестового завершения базовое рабочее пространство восстанавливается своему исходному состоянию.
Тестовые обвязки не поддерживаются для этих типов объектов Stateflow:
Атомарные субдиаграммы
Основанные на Simulink состояния
Функции Simulink
Функции MATLAB
Советник по вопросам Обновления и дифференцирование XML не поддерживаются для моделей тестовой обвязки.
Тестовая обвязка с источником блока Signal Builder не поддерживает:
Основанные на системе координат сигналы
Комплексные сигналы
Сигналы переменной размерности
Для тестовой обвязки с блоком Test Sequence или диаграммой Stateflow как источник, все входные параметры к компоненту под тестом должны действовать с тем же шагом расчета.
Эти факторы применяются к собирающемуся покрытию в тестовой обвязке:
Загрузка результатов покрытия к модели или агрегация результатов покрытия через модели, требуют модели, сопоставимой с результатами покрытия. Поэтому, чтобы выполнить агрегированный набор покрытия, используйте тестовые обвязки, сконфигурированные, чтобы автоматически синхронизировать компонент под тестом. Установите SynchronizationMode на Synchronize on harness open and close
. Для получения дополнительной информации смотрите, Синхронизируют Изменения Между Тестовой обвязкой и Моделью.
Если тестовая обвязка сконфигурирована, чтобы синхронизировать компонент под тестом, когда вы открываете или закрываете обвязку, результаты покрытия от тестовой обвязки сопоставлены с основной моделью. Когда вы закрываете тестовую обвязку, результаты покрытия остаются активными в памяти. Можно агрегировать покрытие дополнительными результатами, собранными из основной модели или другой синхронизируемой тестовой обвязки.
Если тестовая обвязка сконфигурирована, чтобы только синхронизировать компонент под тестом, когда вы вручную продвигаете или восстанавливаете, результаты покрытия сопоставлены с тестовой обвязкой.
Когда вы закрываете тестовую обвязку, результаты покрытия удалены из памяти.
Если компонент в соответствии с тестовым проектом отличается между тестовой обвязкой и основной моделью, вы не можете агрегировать результаты покрытия.
Можно агрегировать результаты покрытия с основной моделью, если компонент в соответствии с тестовым проектом не отличается, но необходимо вручную загрузить результаты покрытия в основную модель. Смотрите функцию cvload (Simulink Coverage).
Для получения информации о покрытии смотрите, Собирают Покрытие в Тестах