Можно создать тесты модели, которые совместимы с системами непрерывного интегрирования (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/BR2020bd_1462360_136931/mlx_to_docbook1/tp4f5a71b7/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: 5.0562 Details: [1x1 struct] Totals: 0 Passed, 1 Failed (rerun), 0 Incomplete. 5.0562 seconds testing time.
8. Повторно включите предупреждения.
warning on Stateflow:cdr:VerifyDangerousComparison warning on Stateflow:Runtime:TestVerificationFailed
matlab.unittest.plugins.TAPPlugin
| matlab.unittest.plugins.TestReportPlugin
| sltest.plugins.ModelCoveragePlugin
| sltest.plugins.TestManagerResultsPlugin
| TestRunner
| TestSuite