开发区域

MATLAB的高级软件开发

轻轻敲进去,轻轻地敲,敲,敲,敲,敲

最后发表我们探索了将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测试与你的生态系统的其他部分结合起来呢?请在评论中告诉我们!




发布与MATLAB®R2014b

|
  • 打印
  • 发送电子邮件

评论

如欲留言,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。