В этом примере показано, как проверить выход алгоритма управления круиз-контроля с помощью Vehicle Network Toolbox™ и основанной MATLAB™ классах среды модульного тестирования.
Он использует MATLAB unit test-class tCruiseControlAlgorifier.m, чтобы предоставить входные команды через Controller Area Network (CAN) Simulink™ модели алгоритма управления круиз-контроля, чтобы запустить функциональное поведение алгоритма, а затем получает обратную связь от модели через CAN и подтверждает ожидаемое Он также генерирует отчет PDF о результатах тестирования, который может использоваться для анализа. Дополнительные сведения о том, как записать класс тестирования, см. в файле tCruiseControlAlgorithmVerifier.m. Диалоговое окно в этом классе помогает вам понять метод настройки тестового класса и то, что делает каждый отдельный тест.
Этот пример использует MathWorks™ Virtual Каналов CAN для связи с алгоритмом.
Алгоритм управления круиз-контроля имеет блок Virtual CAN Inputs, в котором хранится настройка канала CAN с помощью блока CAN Configuration, и получает сообщение, по команде от тестового класса MATLAB с помощью блока CAN Receive. Затем он использует блок CAN Unpack, чтобы отделить сигналы индивидуума от полученного сообщения CAN, которые затем преобразуются в соответствующие типы данных и передаются в фактическую круиз- алгоритм управления.
В блоке Cruise Алгоритма управления находится Cruise Алгоритма управления State Machine, который является диаграммой Stateflow. Этот алгоритм работает на основе входов, полученной от блока Virtual CAN Inputs, и настройка срабатывать, когда условия входа достигли определенного условия. Выходные выходы диаграммы Stateflow являются ожидаемой крейсерской скоростью транспортного средства и состоянием сцепления алгоритма.
Блок Virtual CAN Outputs использует блок CAN Pack для загрузки отдельных сигналов в одно сообщение CAN, которое затем передается на шину CAN с помощью блока CAN Transmit. Это сообщение обратной связи используется для верификации в тестовом классе MATLAB.

Создайте набор тестовых классов для выполнения. В этом примере tCruiseControlAlgorithmVerifier.m является единственным тестом в наборе. Можно добавить дополнительные тесты в тот же тестовый набор. Массив 1xN Test перечисляет количество тестов, а не количество тестовых классов.
suite = testsuite({'tCruiseControlAlgorithmVerifier'})suite =
1×3 Test array with properties:
Name
ProcedureName
TestClass
BaseFolder
Parameterization
SharedTestFixtures
Tags
Tests Include:
0 Parameterizations, 0 Shared Test Fixture Classes, 0 Tags.
Создайте исполнителя тестов для выполнения набора тестов в тестовом наборе. Это определяет раннер без специальных плагинов.
runner = matlab.unittest.TestRunner.withNoPlugins
runner =
TestRunner with properties:
ArtifactsRootFolder: "C:\Users\sdange\AppData\Local\Temp"
PrebuiltFixtures: [1×0 matlab.unittest.fixtures.Fixture]
Setup имя PDF файла, в котором вы хотите получить выход.
pdfFile = 'CruiseControlAlgorithmTestReport.pdf'pdfFile = 'CruiseControlAlgorithmTestReport.pdf'
Добавьте PDF, создающий плагин к своему исполнителю тестов. Во-первых, создайте плагин.
plugin = matlab.unittest.plugins.TestReportPlugin.producingPDF(pdfFile)
plugin =
PDFTestReportPlugin with properties:
IncludeCommandWindowText: 0
IncludePassingDiagnostics: 0
LoggingLevel: Terse
PageOrientation: 'portrait'
Связать этот плагин с исполнителем тестов, чтобы сгенерировать отчет PDF в рабочей директории.
runner.addPlugin(plugin)
Запустите тестовый набор с помощью исполнителя тестов.
result = runner.run(suite)
Generating test report. Please wait.
Preparing content for the test report.
Adding content to the test report.
Writing test report to file.
Test report has been saved to:
\\central-mi\home$\sdange\Documents\MATLAB\Examples\vnt-ex21299704\CruiseControlAlgorithmTestReport.pdf
result =
1×3 TestResult array with properties:
Name
Passed
Failed
Incomplete
Duration
Details
Totals:
2 Passed, 1 Failed (rerun), 0 Incomplete.
214.3521 seconds testing time.
Откройте PDF файла, созданную с заданным именем. Настройка по умолчанию создает его в текущей рабочей директории. В отчете PDF можно наблюдать две вещи:
Общий результат утверждает окончательный результат на основе того, прошли ли все тесты или нет. Круговая диаграмма показывает, сколько тестов прошло и не прошло из общего количества заданных тестов.

В сводных данных отказов показано, какой тест не прошел и по какой причине.

Переход на вкладку сведений в правой части имени отказа приводит к подробной причине сбоя наряду с диагностическим сообщением, настроенным в тестах.
