Можно создать образцовые тесты, которые совместимы с системами непрерывного интегрирования (CI), такими как Jenkins™. Чтобы создать совместимые с CI результаты, запустите свои файлы Simulink® Test™ с помощью MATLAB® Unit Test.
Чтобы запустить совместимые с CI тесты, выполните эту общую процедуру:
Создайте тестовый набор из тестового файла MLDATX.
Создайте исполнителя тестов.
Создайте плагины для теста вывод или результаты покрытия.
Для теста выходные параметры используйте TAPPlugin или XMLPlugin.
Для покрытия модели используйте ModelCoveragePlugin и CoberturaFormat. При сборе покрытия модели в формате Cobertura:
Только покрытие топ-модели отражается в Cobertura XML.
Только образцовый Decision Coverage отражается, и он сопоставлен с элементами Условия в Cobertura XML.
Создайте плагины для совместимого с CI вывода.
Добавьте плагины в тест вывод или результаты покрытия.
Добавьте тест выходные плагины или плагины результата покрытия к исполнителю тестов.
Запустите тест.
Этот пример показывает, как протестировать модель, опубликовать менеджера по Тесту результаты и вывести результаты в формате TAP с одним выполнением.
Вы используете MATLAB® Unit Test, чтобы создать тестовый набор и исполнителя тестов, и настроить бегуна с этими плагинами:
matlab.unittest.plugins.TestReportPlugin производит Протокол испытаний MATLAB.
sltest.plugins.TestManagerResultsPlugin добавляет менеджера по Тесту результаты в Протокол испытаний MATLAB.
matlab.unittest.plugins.TAPPlugin выходные параметры заканчивается к файлу TAP.
Тест создает вход прямоугольной волны к подсистеме контроллера и развертывает через 25 итераций параметров a и b. Тест сравнивает alpha вывод с базовой линией с допуском 0.0046. Тест перестал работать на тех итерациях, в которых вывод превышает этот допуск.
Прежде, чем запустить этот пример, гарантируйте, что рабочая папка перезаписываема.
1. Откройте тестовый файл Simulink® Test™.
testfile = fullfile('f14ParameterSweepTest.mldatx');
sltest.testmanager.view;
sltest.testmanager.load(testfile);2. В менеджере по Тесту сконфигурируйте тестовый файл для создания отчетов.
В соответствии с Опциями Тестового файла, выберите отчет Generate после выполнения. Раздел расширяется, отображая несколько опций отчета. Для получения дополнительной информации смотрите, Сохраняют Опции Создания отчетов с Тестовым файлом.
3. Создайте тестовый набор из тестового файла Simulink® Test™.
import matlab.unittest.TestSuite suite = testsuite('f14ParameterSweepTest.mldatx');
4. Создайте исполнителя тестов.
import matlab.unittest.TestRunner
f14runner = TestRunner.withNoPlugins;5. Добавьте TestReportPlugin в исполнителя тестов.
Плагин производит Протокол испытаний MATLAB F14Report.pdf.
import matlab.unittest.plugins.TestReportPlugin pdfFile = 'F14Report.pdf'; trp = TestReportPlugin.producingPDF(pdfFile); addPlugin(f14runner,trp)
6. Добавьте TestManagerResultsPlugin в исполнителя тестов.
Плагин добавляет менеджера по Тесту результаты в Протокол испытаний MATLAB.
import sltest.plugins.TestManagerResultsPlugin
tmr = TestManagerResultsPlugin;
addPlugin(f14runner,tmr)7. Добавьте TAPPlugin в исполнителя тестов.
Сменные выходные параметры к файлу F14Output.tap.
import matlab.unittest.plugins.TAPPlugin import matlab.unittest.plugins.ToFile tapFile = 'F14Output.tap'; tap = TAPPlugin.producingVersion13(ToFile(tapFile)); addPlugin(f14runner,tap)
8. Запустите тест.
Несколько сбоев итераций, в которых различие сигнала базовое превышает критерии допуска.
result = run(f14runner,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:
/tmp/BR2019ad_1062519_57051/mlx_to_docbook1/tpe6bf1fae/simulinktest-ex40056435/F14Report.pdf
Одно выполнение исполнителя тестов представляет два отчета:
Протокол испытаний MATLAB, который содержит менеджера по Тесту результаты.
Файл формата TAP, который можно использовать с системами CI.
sltest.testmanager.clearResults sltest.testmanager.clear sltest.testmanager.close
Этот пример показывает, как сгенерировать результаты покрытия модели для использования с непрерывным интегрированием. О покрытии сообщают в формате Cobertura. Вы запускаете тестовый файл Simulink® Test™ с помощью MATLAB® Unit Test.
1. Импортируйте классы и создайте тестовый набор из тестового файла AutopilotTestFile.mldatx.
import matlab.unittest.TestRunner aptest = sltest.testmanager.TestFile(fullfile(matlabroot,'toolbox','simulinktest',... 'simulinktestdemos','AutopilotTestFile.mldatx')); apsuite = testsuite(aptest.FilePath);
2. Создайте исполнителя тестов.
trun = TestRunner.withNoPlugins;
3. Установите метрики покрытия собираться. Этот пример использует Decision Coverage. В Cobertura вывод Decision Coverage перечислен как элементы условия.
import sltest.plugins.coverage.CoverageMetrics cmet = CoverageMetrics('Decision',true);
4. Установите свойства отчета покрытия. Этот пример производит файл R13Coverage.xml в текущей рабочей папке. Гарантируйте, что ваша рабочая папка имеет полномочия записи.
import sltest.plugins.coverage.ModelCoverageReport import matlab.unittest.plugins.codecoverage.CoberturaFormat rptfile = 'R13Coverage.xml'; rpt = CoberturaFormat(rptfile)
rpt = CoberturaFormat with no properties.
5. Создайте плагин покрытия модели. Плагин собирает метрики покрытия и представляет отчет формата Cobertura.
import sltest.plugins.ModelCoveragePlugin mcp = ModelCoveragePlugin('Collecting',cmet,'Producing',rpt)
mcp =
ModelCoveragePlugin with properties:
RecordModelReferenceCoverage: '<default>'
MetricsSettings: [1x1 sltest.plugins.coverage.CoverageMetrics]
6. Добавьте плагин покрытия в исполнителя тестов.
addPlugin(trun,mcp) % Turn off command line warnings: warning off Stateflow:cdr:VerifyDangerousComparison warning off Stateflow:Runtime:TestVerificationFailed
7. Запустите тест.
APResult = run(trun,apsuite)
APResult =
TestResult with properties:
Name: 'AutopilotTestFile > Basic Design Test Cases/Requirement 1.3 Test'
Passed: 0
Failed: 1
Incomplete: 0
Duration: 7.3763
Details: [1x1 struct]
Totals:
0 Passed, 1 Failed (rerun), 0 Incomplete.
7.3763 seconds testing time.
8. Повторно включите предупреждения.
warning on Stateflow:cdr:VerifyDangerousComparison warning on Stateflow:Runtime:TestVerificationFailed
TestRunner | TestSuite | matlab.unittest.plugins.TAPPlugin | matlab.unittest.plugins.TestReportPlugin | sltest.plugins.ModelCoveragePlugin | sltest.plugins.TestManagerResultsPlugin