В этом примере показано, как использовать тест Simulink на основе MATLAB для сбора покрытия в модели с тестовым жгутом, а также использовать тестовую структуру MATLAB для заполнения результатов в диспетчере тестов. Тесты Simulink на базе MATLAB .m файл тест определения класса примеров, которые наследуют от sltest.TestCase.
тестовый файл Simulink на основе MATLAB, TestHarnessWithModelCoverage.m, был создан и приводится в этом примере. Тестовый файл содержит две тестовые функции. Каждый из них имеет модель кабельных трасс для управления входными данными для тестирования подсистемы TestHarnessWithModelCoverage/Subsystem1 и сравнить с соответствующей базовой линией. В этом тесте используется Simulink.SimulationOutput объект при моделировании модели.
classdef TestHarnessWithModelCoverage < sltest.TestCase
methods (Test)
function testOne(testCase)
in = testCase.createSimulationInput('simpleSwitchWithSubsystemIn',...
'WithHarness','simpleSwitchWithSubsystemIn_Harness1');
simOut = testCase.simulate(in);
testCase.verifySignalsMatch(simOut,'baselineOne.mat');
end
function testTwo(testCase)
in = testCase.createSimulationInput('simpleSwitchWithSubsystemIn',...
'WithHarness','simpleSwitchWithSubsystemIn_Harness2');
simOut = testCase.simulate(in);
testCase.verifySignalsMatch(simOut,'baselineTwo.mat');
end
endend
Создать TestRunner для запуска sltest_ratelim модель.
import matlab.unittest.TestRunner;
runner = TestRunner.withTextOutput;
Создать TestSuite для использования с TestRunner.
suite = testsuite('TestHarnessWithModelCoverage');
Используйте методы подключаемого модуля для настройки TestRunner для добавления результатов теста из sltest.TestCase менеджеру тестирования. Добавить TestRunnerPlugin в TestRunner.
import sltest.plugins.MATLABTestCaseIntegrationPlugin;
runner.addPlugin(MATLABTestCaseIntegrationPlugin);
DiagnosticsOutputPlugin и ToTestManagerLog потоковая диагностика из sltest.TestCase выполнить в журналы TestCaseResults в Test Manager. Диагностика включает в себя прохождение диагностики для тестов, которые прошли. Добавьте DiagnosticsOutputPlugin и ToTestManagerLog в TestRunner.
import sltest.plugins.ToTestManagerLog; import matlab.unittest.plugins.DiagnosticsOutputPlugin; streamOutput = ToTestManagerLog(); diagnosticsOutputPlugin = DiagnosticsOutputPlugin... (streamOutput,'IncludingPassingDiagnostics',true); runner.addPlugin(diagnosticsOutputPlugin);
Модели в sltest.TestCase , которые моделируются с использованием simulate способ может собирать покрытие. Используйте ModelCoveragePlugin для конфигурирования коллекции метрик покрытия. В этом примере выполняется сбор данных о покрытии MCDC. Добавить ModelCoveragePlugin в TestRunner.
import sltest.plugins.coverage.CoverageMetrics; import sltest.plugins.ModelCoveragePlugin; mcdcMetrics = CoverageMetrics('MCDC',true); runner.addPlugin(ModelCoveragePlugin('Collecting',mcdcMetrics));
Теперь, когда TestRunner полностью сконфигурирован, используйте run функция сбора данных о покрытии и добавления результатов покрытия и тестирования к диспетчеру тестирования.
run(runner,suite);
Setting up ResultSetFixture
Done setting up ResultSetFixture
__________
Running TestHarnessWithModelCoverage
..
Done TestHarnessWithModelCoverage
__________
Coverage Report for simpleSwitchWithSubsystemIn/Subsystem1
/tmp/BR2021ad_1640230_185635/publish_examples0/tp6044bd52_d022_4fb7_b212_6e607e4a3c18.html
Tearing down ResultSetFixture
Done tearing down ResultSetFixture
__________
run также создает отчет, включающий совокупное покрытие для запущенного набора тестов. Используйте Coverage Report for sltest_ratelim ссылка для просмотра отчета.
Откройте диспетчер тестов
sltestmgr
Выберите панель Результаты и артефакты (Results and Artifacts) и разверните строки Результаты (Results) и Базовая структура (Baseline)
Выберите testOne строка.
В разделе «Результаты покрытия» показано покрытие, собранное для sltest_ratelim от testOne.
Выберите testTwo строка.
В разделе «Результаты покрытия» показано покрытие, собранное для sltest_ratelim от testTwo.
Выберите BaselineTestWithCoverage строка.
В разделе Агрегированные результаты покрытия показано агрегирование покрытия, собранного для sltest_ratelim от testOne и testTwo. Агрегированные результаты показывают полное покрытие для указанных метрик покрытия.