В этом примере показано, как использовать тест Simulink на основе MATLAB для сбора покрытия на модели с тестовой обвязки и использовать MATLAB Test Framework, чтобы заполнить результаты в диспетчере тестов. Тесты 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 end
end
Создайте 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);
The 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
функция для сбора покрытия и добавления покрытия и результатов тестирования в Test Manager.
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
ссылка для просмотра отчета.
Откройте Test Manager
sltestmgr
Выберите панель Результаты и программные продукты и разверните строки Результаты и BaselineTestWithCoverage.
Выберите testOne
строка.
В разделе «Результаты покрытия» показан охват, собранный для sltest_ratelim
от testOne
.
Выберите testTwo
строка.
В разделе «Результаты покрытия» показан охват, собранный для sltest_ratelim
от testTwo
.
Выберите BaselineTestWithCoverage
строка.
В разделе «Агрегированные результаты покрытия» показано агрегирование покрытия, собранного для sltest_ratelim
от testOne
и testTwo
. Агрегированные результаты показывают полное покрытие для указанных метрик покрытия.