开发区域

MATLAB高级软件开发

多测试一些项目

现在你了解一些项目.您可以看到它们如何使您能够创建一个标准的环境设置,以便您(和其他人!)可以重现正确的条件,从而轻松地开始工作或学习曲线。它为您提供了一个基本的开发单元,以便所有贡献者都知道如何立即开始并为您的工作做出贡献。

为了提高效率,我想展示项目如何开始为一个真实的示例项目改进工作流程,展示如何将项目用于现有的代码,也许当我们谈到它时,我们可以了解项目所提供的更多好处。

因此,让我来介绍一下libDirectional!它能做什么?其实我没什么头绪。它是一个与“定向统计以及定向流形上的递归估计”相关的库,老实说,我对这个主题知之甚少。然而,它看起来像一个很好的项目放在一起。它有很好的文档,一种很好的一致的方式来构建它的mex文件和从源代码派生的其他工件,它提供并管理它的依赖关系,它有一个非常全面的测试套件。荣誉libDirectional !

我认为项目可以帮助它更上一层楼!这个项目已经在git中了,所以让我们继续,用git创建一个新项目,把它变成一个项目:

然后系统会提示您输入存储库:

并确认项目名称:

正如劳拉向你们展示的最后一次,您可以利用项目来确保正确的路径在启动时固有地添加到项目中。不再需要安装说明,新的贡献者可以简单地加载项目。这也意味着不再需要处理路径管理的启动文件。

[pathstr,~,~] = fileparts(mfilename(' fullpath '));目录(genpath ([pathstr“/ lib”))) clearvarspathstr

项目设置会引导你完成这些,现在我们可以继续并删除不再需要的启动文件:

请注意,一旦项目设置完成,您可以轻松地将其转换为工具箱,以便分发给项目的用户使用它,并不是真的需要贡献但是我会把它留给你们作为练习去探索。

因此,现在贡献者可以通过克隆git存储库并启动项目来启动和运行。完成了。不需要说明。用户只需将工具箱作为附加组件安装即可启动并运行。可爱。

但是等等,还有更多!还有一个相对简单,但强大的能力被构建到项目中,这是值得强调的,它开始引导我们进入额外的工作流,例如通过持续集成确保质量。

关键在于——项目知道如何测试自己。或者,它们可能使项目作者能够精确地编码如何测试项目,以便其他人(如同事)和计算机(如CI构建代理)可以简单地询问,“项目,测试您自己!”,然后就可以开始比赛了。只需将“Test”标签作为元数据添加到测试文件中,就可以做到这一点,然后就完成了!

事实上,您甚至不需要添加测试标签,因为项目在确定什么是测试和为您添加标签方面做出了坚实的努力。的子类继承的测试,例如基于脚本的测试matlab.unittest.TestCase,因此一定要确认所有测试都贴上了适当的标签。在这种情况下,项目会在默认情况下适当地标记它们。如果您想从“标准”项目测试套件中排除一些测试,可以通过如下所示删除标签来实现。这在某些情况下可能会派上用场,例如当某些测试执行时间较长,而您只想在特殊的延迟测试运行中运行它们时。

现在,使用项目元数据适当地标记测试后,您实际上可以直接从项目创建测试套件并运行它。这就像导航到项目根目录并调用一样简单runtests.同样,您可以简单地将项目的根文件夹传递给runtests功能:

runtestslibDirectional
设置ProjectFixture:打开项目“libDirectional”。__________运行TessellateS3Test。Done TessellateS3Test __________ Running AbstractCircularDistributionTest .....完成AbstractCircularDistributionTest __________…(剪)…拆除ProjectFixture:关闭项目“libDirectional”__________

注意,在上面的输出中,这利用了aProjectFixture.这是关键,因为ProjectFixture加载项目,从而确保在运行测试之前,使用正确的路径和其他需求正确地设置了开发环境。

您还可以使用各种插件定制您的测试运行程序。在这种情况下,您可以使用testsuite函数(类似地)为项目创建测试(附带有ProjectFixture),然后创建和调整您想要用于这些测试的运行器,以便您可以做一些事情,如产生TAP或JUnit风格的测试工件,PDF或html报告,覆盖率,Simulink测试自定义和许多其他您可能想做的事情。金宝app

现在要在CI中设置您的项目进行测试,您所需要做的仅仅是一个git克隆,然后是一个batch assertSuccess(运行测试)从项目根(可能是您刚刚克隆的git repo的根)。完成了。容易peasy。让我们继续让您担心CI和开发设置之外的事情。你知道,非常困难和重要的事情,比如“定向统计和定向流形的递归估计”。

准备好了吗?走吧!




发布与MATLAB®R2020a

|
  • 打印
  • 发送电子邮件

评论

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