В этом примере показано, как проверить выходные данные алгоритма круиз-контроля с помощью Toolbox™ сети транспортных средств и системы модульного тестирования на основе класса MATLAB™.
Он использует тестовый класс MATLAB-unit tCruireControlTalkVerifier.m для подачи входных команд через сеть контроллеров (CAN) в Simulink™ модель алгоритма круиз-контроля для запуска функционального поведения алгоритма, а затем получает обратную связь от модели через CAN и проверяет ожидаемое поведение алгоритма. Он также создает PDF-отчет о результатах тестирования, который может использоваться для анализа. Дополнительные сведения о том, как записать тестовый класс, см. в файле tCruableControlTalkVerifier.m. Диалог в этом классе помогает понять метод настройки тестового класса и то, что делает каждый отдельный тест.
В этом примере для связи с алгоритмом используются MathWorks™ виртуальные каналы CAN.
Алгоритм круиз-контроля имеет виртуальный блок CAN Inputs, в котором размещается настройка канала CAN с помощью блока CAN Configuration, и получает сообщение, управляемое из тестового класса MATLAB с помощью блока CAN Receive. Затем он использует блок распаковки CAN для отделения отдельных сигналов от принятого сообщения CAN, которые затем преобразуются в их соответствующие типы данных и передаются в алгоритм фактического круиз-контроля.
В блоке Cruise Control Algorithm размещена государственная машина Cruise Control Algorithm, представляющая собой диаграмму Stateflow. Этот алгоритм работает на основе входных данных, полученных от блока виртуальных входов CAN, и настроен на запуск, когда условия ввода достигли определенного условия. Выходами диаграммы Stateflow являются ожидаемая крейсерская скорость транспортного средства и состояние включения алгоритма.
Блок виртуальных выходов CAN использует блок CAN Pack для загрузки отдельных сигналов в одно сообщение CAN, которые затем передаются на шину CAN с использованием блока CAN Transmit. Это сообщение обратной связи используется для проверки в тестовом классе MATLAB.

Создайте набор тестовых классов для запуска. В этом примере единственным тестом в комплекте является tCruireControlTalkVerifier.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]
Настройте имя 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 можно наблюдать две вещи:
Общий результат определяет конечный результат на основе того, все ли тесты прошли или нет. Круговая диаграмма показывает, сколько тестов прошло и не прошло из общего количества определенных тестов.

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

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