MATLAB社区

MATLAB,社区等等

消除测试的麻烦

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

测试是很棒的。当你有工作测试时,你会感到干净和温暖。太阳更加明亮,鸟儿为你唱着歌。但是,天啊,做这些测试和工作真是太痛苦了。编写测试很麻烦,持续运行测试(并捕获结果)也很乏味。如果我们能够在保留价值的同时减少这些麻烦,那将是一个多么美好的世界啊!

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

为此,我将向你们展示我为我的GitHub上的动画库(并链接到文件交换)。Animator可以很容易地创建像这里所示的小动画。如果你想知道,你看到的是三种类型的菱形曲线这里:摆线肌、弧形肌和长形肌。但这不是我来这的目的。

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

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

function y = times2(x) %返回输入乘以2。Y = 2*x;结束

不错,是吗?假设这就是你的整个工具箱。编写一个名为testTimes2的脚本。M,把这段代码放进去。

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

维护命令是值得拥有的好朋友。你只要给它一个表达式,如果它的计算结果为真,它就完全沉默了。但如果它为假,则抛出一个错误并使测试失败。

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

这将为文件main.yml打开一个web编辑器。把下面的文字粘贴在那里。

名称:在github托管的运行器上运行测试:[push]作业:我的作业:名称:运行MATLAB测试并生成工件运行: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),你现在不需要担心这个。但这些也会被自动检测到。

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

最后一件事。如果你开启了测试,你应该告诉全世界。您可以在repo的README.md中使用徽章来完成此操作。再一次,这再容易不过了。把这段文字放在自述文件的顶部。当然,您需要替换您自己的仓库的名称和地址。

[![动画师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.可选的。用上面提供的文本为您的自述文件添加一个徽章。

当然,在这个过程中还有更多的花里胡哨。就像我说的,你得到的是廉价版的测试。一旦你得到它的工作,你可能会开发更复杂的测试:MATLAB单元测试,项目定义的测试文件,过滤器将只测试某些类型的变化。但那可以等一等。

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

|
  • 打印
  • 发送电子邮件

评论

要发表评论,请点击此处2017-07-29 13:313:00