MATLAB社区

MATLAB,社区等

消除测试的麻烦

这幅漫画总结了我对考试的感受。

测试是很棒的。当你有工作测试时,你感到干净和温暖。阳光更明媚了,鸟儿为你唱了一首歌。但天啊,做这些测试并正常工作真是痛苦。编写测试是一件麻烦的事情,并且始终如一地运行测试(并捕获结果)是乏味的。如果我们能在保留价值的同时减少这种麻烦,那将是一个多么美好的世界啊!

朋友们,请保持这个想法,因为我要给你们看一些光荣的东西。一个明亮的新世界,鸟儿为你歌唱。如果你在GitHub回购中有MATLAB代码(如果你没有,我会等五分钟让你放一些进去),那么设置自动MATLAB测试几乎是微不足道的。无需摆弄许可证和安装。它就是有用,而且我可以保证它比你想象的要简单。

为了这个,我要给你们看我为我的GitHub上的动画器回购的链接文件交换).Animator可以很容易地创建像这里显示的这样的小动画。如果你想知道,你看到的是三种类型的旋回曲线这里是摆线,矢状trodroid,和长trodroid。但我不是来谈这个的。

Animator工具通过进入编辑器并操纵生成图像的脚本来构建动画。所以我有一些挑剔的文件解析代码,我想用一些测试来保护它们。

有一些非常奇妙的方法来设置测试,但我将告诉您绝对最简单的入门方法。假设你有一个叫times2.m的函数。它将输入乘以2。在这儿。

返回输入值乘以2。Y = 2*x;结束

不错,是吗?假设这是你的工具箱。创建一个名为testTimes2的脚本。M,然后把这个代码放进去。

testTimes2。米  --------- %% 测试1断言(isequal (times2(3), 6)) % % 2测试断言(isequal (times2 (6), 12))

维护命令是值得拥有的好朋友。你只要给它一个表达式,如果它的值为真,它就完全沉默。但如果为false,则抛出错误并通过测试。

现在你转到你的GitHub回购并创建一个新的Actions工作流。您将看到许多建议项目,但请选择页面顶部的选项:“自己设置工作流”。

这将打开文件main.yml的网络编辑器。把下面的文字插进去。

名称:在github托管的运行器上运行测试:[推送]作业:my-job:名称:运行MATLAB测试并生成工件运行-on: ubuntu-最新步骤:—名称:检查存储库使用:actions/checkout@v3 -名称:设置MATLAB使用:MATLAB -actions/setup-matlab@v1 -名称:运行测试并生成工件使用:MATLAB -actions/run-tests@v1

的文档中可以了解有关此代码的更多信息matlab-actions回购.最重要的是MathWorks的持续集成团队创建了一些自动设置和运行MATLAB测试的操作。上面显示的代码是通用的。你不需要编辑它。它将查找任何以神奇的哨兵字符串“test”开头或结尾的文件(不区分大小写)。我的Animator repo有一个文件叫smokeTest.m这符合这个标准。我也有一些MATLAB单元测试(在animatorTests.m),你现在不需要担心这个问题。但这些也会被自动检测到。

如果我们回到我们想象的times2回购,一旦你保存main。每次你把任何文件推到repo, testTimes2. yml。M将运行,这两个断言将确保times2做正确的事情。你总是在最新版本的MATLAB上测试在最新版本的Ubuntu上。Niiice。

最后一件事。如果你开启了测试,你应该告诉全世界。你可以在回购的README.md中添加一个徽章。再一次,这再容易不过了。把这段文字贴在README的顶部。当然,您需要替换您自己的回购的名称和地址。

[!【动画师CI/CD】(https://github.com/gulley/Animator/actions/workflows/main.yml/badge.svg)】(https://github.com/gulley/Animator/actions/workflows/main.yml)

对于零配置,此文本不仅会让您的访问者知道您进行了测试。它会告诉他们最近的测试是通过还是不通过。

这就是全部!

1.做一个简单的测试。
2.使用上面提供的文本创建一个操作工作流
3.可选的。用上面提供的文本为README添加一个徽章。

当然,在这个过程中还有很多附加功能。就像我说的,你得到的是廉价版本的测试。一旦你让它工作,你可能会对更复杂的测试产生兴趣:MATLAB单元测试,项目定义的测试文件,只测试某些类型的更改的过滤器。但这可以等一等。

现在,享受这种干净、温暖的感觉吧。

|
  • 打印
  • 发送电子邮件

评论

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