测试等价与墨西哥人(m) matlab函数

4视图(30天)
什么是最好的方法来创建一个测试比较输出从.mex和m函数?它已成为一个通用工作流在matlab编写处理管道,如果需要,找到瓶颈和试图重写他们与墨西哥人较低的语言。我想确认我的墨西哥人的功能和matlab函数产生相当于(或几乎相当于)的结果。有内装式运行matlab文件即使墨西哥人文件同名的存在吗?是matlab fallsback m文件如果没有康比尔墨西哥人文件,都应该是最佳实践,matlab和墨西哥人,版本的功能,因此,它应该是一个常见的需要编写测试,确保这两个是相同的。
如果没有运行matlab函数文件,我应该如何写这个测试吗?我可以写在不同的文件名(即foo_matlab功能。m foo_C.c),那么有一个包装器函数调用所需的函数(即默认为C如果它存在,但“购买”选项)。但这显然不是周围的matlab对这裙子,然后重写默认行为类似的逻辑。我能想到的另一个选择是删除文件(如果它存在的话)墨西哥人在测试设置,运行这个函数,然后编译在相同的测试,并重新运行该函数在相同的方式,并比较结果。这确保编译函数的好处是最新的,但它需要重新编译为每个测试或使用一个丑陋的方法用matlab函数运行所有测试,存储结果,墨西哥人函数编译,然后重新运行测试和比较。但这并不遵循正常的测试惯例,两个部分应该运行在相同的测试函数。
编辑
忘了最初提到,但我没有地面真值我的许多测试用例这是不够两个版本通过测试(见我反应1月的答案更多细节)。其次,解决方案应该能够处理包(函数被称为以不同的方式比流浪在matlab函数的路径)因为我任何代码测试是写成一个包。

接受的答案

1月
1月 2021年9月6日
我将墨西哥人编译函数存储在特定的文件夹中。这是有用的还支持不同的Matlab版本,每个版金宝app本都有自己的墨西哥人文件的文件夹。
然后包括墨西哥人文件夹路径测试的墨西哥人的功能,如果没有这个文件夹,原来的文件夹中的M-files测试。如果两个函数通过已知答案测试和随机测试,可以认为,它们的输出是等价的。
3评论
大卫·康奈尔大学
大卫·康奈尔大学 2021年9月7日
谢谢你的有经验的反应。我打算使用if语句和一个逻辑参数根据你上面的例子。使用输入解析器,添加一个可选参数默认为墨西哥人如果一个墨西哥人文件存在但仍然让我使用一个测试版本 TestParameter 属性的一致性。
我故意想足够逻辑转移到墨西哥人函数只需要一个电话。的M文件,调用一些矩阵操作数量的增加与网络的大小,所以我希望一切搬到墨西哥人将减少时间减少调用底层函数,特别是这些调用传递矩阵。(有一个整件事情但内存需求没有进行向量化规模。)
我已经满意功能丰富和灵活的matlab的测试框架是如何我惊讶没有内置的方法比较墨西哥人和M函数。写作的工作流在matlab移动缓慢的部分墨西哥人根据需要将与墨西哥人的规范,比较两种方法的好处是显而易见的。即使他们都写正确,当你提到,各种细微的差别,例如舍入误差会导致轻微的结果之间的差异和所需信息的解释。
根据你的反应,我还有很多要学习的测试项目,但到目前为止,单元测试的好处就已经证明远远超过开销和工作流甚至导致一个高级地图指导发展,帮助确定突破功能。再次感谢您的建议。

登录置评。

更多的答案(0)

类别

找到更多的在基于类的单元测试帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!