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