开发人员区

MATLAB的高级软件开发

只需点击一下…给它一点龙头龙头龙头龙头

最后一篇文章我们探索了将MATLAB连接到Jenkins,运行测试,并确保在任何测试故障时构建失败。我们利用了从测试运行返回的测试量数组,以便在具有非零退出状态代码的MATLAB退出MATLAB,以便在需要时与Jenkins通信,以使构建应失败。

这将起作用,但是如果您有R2014A或更高版本,则有更好的方法。要真正与Jenkins集成,Matlab和Jenkins需要彼此之间进行更充分的沟通。一个好方法是利用标准,语言独立测试任何协议(点击)。使用詹金斯的点击插件Tapplugin对于MATLAB TestRunner,MATLAB可以向Jenkins提供更多详细信息。此信息包括运行哪些测试,哪些测试失败,哪些测试被过滤。此外,还启用了其他Jenkins功能,例如历史跟踪。

已经足够!这是怎么做的?

在Jenkins中设置TAP插件

首先,Jenkins需要Tap插件才能解释TAP流。这是从Jenkins插件管理器完成的,可以通过搜索“ Tap”来轻松找到:

一旦安装了新的“发布点击结果”选项,可以作为后构建操作获得。

将Jenkins指向将生成水龙头流的位置之后,我们可以在合适的情况下进一步配置插件行为。例如,如果未运行测试或测试数量与TAP计划不同,我们可能会使构建失败。重要的是,如果有任何测试失败,我们需要检查该选项以使构建失败。在这里,我们正在拾取具有“ .tap”扩展名的任何文件,如果有任何测试故障,未运行测试或TAP计划未完成,则将失败构建。

在MATLAB中设置Tapplugin

从上一篇文章开始,我们已经连接并运行了测试,现在我们只需要特定的测试即可输出詹金斯(Jenkins)将拾取和分析的水龙头流。为此,我们可以创建自己的TestRunner并将Tap插件添加到其中。但是,一个考虑因素是,我们不希望MATLAB中产生的测试输出妨碍Tap流并使之无效,因此我们需要确保Tap流针对命令窗口以外的其他地方。我们还需要TAP流才能输出到Jenkins插件可以找到的文件。通过将Tapplugin输出发送到A,可以方便地解决这两个问题tofile溪流。测试运行脚本变为:

进口matlab.unittest.testsuite;进口matlab.unittest.testrunner;进口matlab.unittest.plugins.tapplugin;进口matlab.unittest.plugins.tofile;尝试套件= testsuite.frompackage('测试用例',,,,“包含苹果包”,真的);%创建具有文本输出的典型跑步者Runner = testRunner.withTextOutput();%添加TAP插件并将其输出定向到文件tapfile = fullfile(getenv(getenv)(“工作空间”),'testResults.tap');runner.addplugin(tapplugin.producingoriginalformat(tofile(tapfile)));%运行测试结果= runner.run(suite);显示(结果);抓住e disp(getReport(e,“扩展”);出口(1);结尾出口;

在存在这些测试故障的情况下,运行詹金斯构建现在使构建失败:

享受劳动的果实

詹金斯(Jenkins)现在还将深入了解通过,失败或过滤到哪些测试,您可以快速导航到失败综合症并开始研究。

此外,随着时间的推移,许多Jenkins/Tap-Plugin功能还增加了软件健康的可见性,例如通过测试的历史记录,测试失败和随着时间的推移列出的测试,在项目页面上列出的时间:

在这里,您可以看到测试套件增长和健康的历史,因为它与失败和过滤测试内容有关。例如,如果我们修复了此测试套件中的故障并运行新工作,我们会发现红色消失了。

同样,如果我们进行所需的工作来解开尚未运行的测试内容……âhasta la vista al amarillo!

请注意,设置CI系统的方法有许多不同的方法,这只是一个快速示例。也就是说,如果您使用这种方法,您还需要确保清理构建之间的工作空间以删除所产生的这些点击文件,以便每个构建都以新鲜的结果开头,否则先前作业的点击文件将对来自当前的工作。

你怎么看?您之前是否使用过语言独立的TAP格式进行测试结果?您还如何与其余的生态系统一起拟合MATLAB测试?让我们在评论中知道!




与Matlab®R2014B一起出版

|
  • 打印
  • 发送电子邮件

注释

要发表评论,请单击这里登录您的数学帐户或创建一个新帐户。