В этом примере показано, как использовать основанный на MATLAB тест Simulink, чтобы собрать покрытие на модели с тестовой обвязкой и использовать Среду тестирования MATLAB, чтобы заполнить результаты в менеджере по Тесту. Основанными на MATLAB тестами Simulink является .m определения классов теста файла, которые наследовались sltest.TestCase.
Основанный на MATLAB тестовый файл Simulink, 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, и Artifacts разделяют на области и расширяют строки BaselineTestWithCoverage и Результаты.
Выберите testOne строка.
Раздел Coverage Results показывает покрытие, собранное для sltest_ratelim от testOne.
Выберите testTwo строка.
Раздел Coverage Results показывает покрытие, собранное для sltest_ratelim от testTwo.
Выберите BaselineTestWithCoverage строка.
Раздел Aggregated Coverage Results показывает агрегацию покрытия, собранного для sltest_ratelim от testOne и testTwo. Агрегированные результаты показывают полный охват для заданных метрик покрытия.