轻轻敲进去,轻轻地敲,敲,敲,敲,敲
最后发表我们探索了将MATLAB连接到Jenkins,运行测试,并确保在任何测试失败时构建失败。我们利用从测试运行返回的TestResult数组,以便在需要构建应该失败时,使用非零退出状态代码退出MATLAB,以便与Jenkins通信。
这是可行的,但如果你有R2014a或更高版本,还有更好的方法。要想与Jenkins真正融合,MATLAB和Jenkins之间需要进行更充分的沟通。实现这一点的一个好方法是利用标准,独立于语言测试任何协议(TAP).使用Jenkins的TAP插件和TAPPlugin对于MATLAB TestRunner, MATLAB可以给Jenkins更详细的信息。该信息包括运行了哪些测试、哪些测试失败了以及哪些测试被过滤了。此外,还启用了Jenkins的其他功能,例如历史记录跟踪。
够了够了!这是怎么做到的?
在Jenkins中设置TAP插件
首先,Jenkins需要TAP插件来解释TAP流。这是在Jenkins插件管理器中完成的,可以通过搜索“TAP”轻松找到:
一旦安装了一个新的“发布TAP结果”选项可作为构建后的操作。
在将Jenkins指向将生成tap流的位置之后,我们可以根据我们认为合适的情况进一步配置插件行为。例如,如果没有运行测试,或者测试数量与TAP计划不同,则可能导致构建失败。重要的是,如果有任何测试失败,我们需要检查使构建失败的选项。在这里,我们正在收集带有“”的任何文件。tap”扩展,如果有任何测试失败、没有运行测试或tap计划未完成,则构建将失败。
在MATLAB中建立TAPPlugin
从上一篇文章开始,我们已经连接并运行了测试,现在我们只需要特定的测试运行来输出一个TAP流,该流将由Jenkins接收和分析。为此,我们可以创建自己的TestRunner,并将TAP插件添加到其中。然而,一个需要考虑的问题是,我们不希望在MATLAB中产生的测试输出妨碍TAP流并使其失效,因此我们需要确保TAP流被定向到命令窗口以外的其他地方。我们还需要TAP流输出到Jenkins插件可以找到的文件中进行分析。这两个问题都可以通过将TAPPlugin输出发送到去整理流。测试运行脚本变成:
进口matlab.unittest.TestSuite;进口matlab.unittest.TestRunner;进口matlab.unittest.plugins.TAPPlugin;进口matlab.unittest.plugins.ToFile;试一试suite = testsuite . fropackage (“测试”,“IncludingSubpackages”,真正的);创建带有文本输出的典型运行器runner = testrunn . withtextoutput ();添加TAP插件并将其输出指向一个文件tapFile = fullfile(gettenv)“工作区”),“testResults.tap”);runner.addPlugin (TAPPlugin.producingOriginalFormat(去整理(tapFile)));%运行测试结果= runner.run(suite);显示(结果);抓e disp (getReport (e,“扩展”));退出(1);结束退出;
运行Jenkins构建会在出现以下测试失败时失败:
享受你的劳动成果
Jenkins现在还将让您深入了解哪些测试通过、失败或被过滤,以便您可以快速导航到失败综合症并开始调查。
此外,许多Jenkins/TAP-Plugin特性增加了对软件运行状况的改进可见性,如通过测试、失败测试的历史记录,以及在项目页面中列出的经过过滤的测试:
在这里,您可以看到测试套件增长和运行状况的历史,因为它与失败和过滤的测试内容有关。例如,如果我们修复这个测试套件中的失败,并运行一个新的作业,我们会看到红色消失。
同样地,如果我们接着做必要的工作来取消尚未运行的测试内容的过滤……“美好的未来!”
注意,有许多不同的方法可以设置CI系统,这只是一个简单的例子。也就是说,如果使用这种方法,您还需要确保在构建之间清理工作区,以删除生成的这些TAP文件,以便每个构建都以新的结果开始,否则来自前一个作业的TAP文件将破坏来自当前作业的TAP文件。
你怎么看?您以前是否使用独立于语言的TAP格式作为测试结果?你还能如何将MATLAB测试与你的生态系统的其他部分结合起来呢?请在评论中告诉我们!
- 类别:
- 持续集成
评论
如欲留言,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。