Matlab从XUnit迁移到Matlab 2013单元测试

4

正如您所知,从MatLab 2013a发布以来,xUnit,MatLab中一种流行的单元测试框架已经取消了进一步的开发。

MatLab的新本地单元测试框架是否与xUnit相当?与xUnit相比,它缺少哪些功能?它是比xUnit更好还是更差?


xUnit现在由新开发者继续开发,成为xUnit4,网址为http://www.mathworks.com/matlabcentral/fileexchange/47302-xunit4。 - JaBe
2个回答

3
MATLAB xUnit对于编写MATLAB代码的测试重点开发人员来说是一个很好的贡献。它有一个坚实的实现,非常遵循xUnit范例,并且作为文件交换贡献非常有价值。
MATLAB Unit Test框架确实从这个提交以及MathWorks内部代码库数十年的需求和测试重点开发中学到了很多。我们也学习并扩展了其他语言的框架,如JUnit、NUnit和python的unittest框架。因此,在R2013a及以上版本的框架中肯定有更多的功能,并且它被设计为可扩展和可扩展的。
要在简单的答案中介绍太多其他功能,但也许描述一些差异的一种方法是,13a框架是我粗略地称之为“xUnit 2.0”,而文件交换提交是“xUnit 1.0”框架。如果您熟悉JUnit,那么这就像JUnit 3和JUnit 4之间的区别。
还有其他无形或尚未实现的好处,例如:
  1. 该框架直接包含在MATLAB中,因此您可以与他人共享测试,并知道即使他们不熟悉测试并且不想下载文件交换框架,他们也可以运行测试。
  2. 该框架正在积极开发中,未来的版本中将具有更多功能和能力。
希望这可以帮助您。我很乐意回答您对特定功能或功能的任何问题。

1
我不相信 MathWorks 有计划停止提供 xUnit,所以如果您喜欢,可以继续使用它。xUnit 已经很长时间没有进行大规模的更改了,即使在功能方面不会再进一步开发,但如果需要,它可能会偶尔接收到一些修复。
我已经尝试了新的框架,但还没有在任何大型项目中使用过它。以前我曾在大型项目中使用过 xUnit。然而,我不是单元测试方面的专家,因此请在这种情况下阅读以下意见。
我非常确定,在 xUnit 中你无法做到的事情,在新的框架中都可以做到。总体来说,它比 xUnit 更加灵活和强大,提供了附加功能和更好的方式来组织和结构化测试。它更容易设置和拆卸测试套件,管理和关闭资源(文件、图形窗口、数据库连接等),并执行棘手的测试,例如检查是否返回了正确数量的参数。
然而,虽然典型的 xUnit 测试是实现为相当简单的 MATLAB 函数,但在新的框架中,测试通常使用 MATLAB 的 OO 语法实现(在13a中,但请参见下文的13b),如果您对此不熟悉,它可能看起来像一个巨大的飞跃。
我还要补充的是,虽然测试框架的文档作为参考资料非常出色,但我发现它并不适合作为教程。
在13b中,使用类的需求已经被引入了functiontests命令所抵消,该命令会从包含作为本地函数实现的测试的文件中为您创建一个测试套件。如果您对类语法不太熟悉,这将使事情变得更加容易。但我认为,如果您想利用所有功能,您可能仍然需要使用主要框架。
希望我的经验能够帮到您 - 如果您幸运的话,也许@AndyCampbell会加入讨论...

1
天啊,@SamRoberts,我害羞了。 :-) - Andy Campbell
2
嗯,这是一份不错的工作 @AndyCampbell :). 但是当你完成夸奖之后,去给我们写一些更好的教程示例吧! - Sam Roberts
:-) 是的,我想跟进一下关于那个问题。您能提供一些详细信息吗?例如,您在使用现有示例时遇到了什么困难以及您发现缺少了什么?我们很乐意了解更多关于您发现缺失的内容,以便我们可以解决这些问题。(请注意,我假设您正在使用最新版本的文档,因为它也正在积极开发中)。欢迎通过电子邮件向我发送这些详细信息。 - Andy Campbell
@AndyCampbell明天我回复你这个问题,今天我在2011b的客户现场,但是明天我将回家办公,那里有13b安装。我会给你发一封电子邮件(我猜你的名字是firstname.lastname - andy/andrew?)。 - Sam Roberts

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接