单元测试Modelica组件库?

时间:2016-03-22 14:31:35

标签: modelica openmodelica

我正在Modelica中创建一个组件库,并希望对单元测试包的技术有所了解。

到目前为止,我有一个测试包,由一组模型组成,每个组件一个。每个测试模型都实例化一个组件,并将其连接到一些非常简单的辅助类,它们提供必要的输入和输出。

在OMEditor中以交互方式使用它时工作正常,但我正在寻找具有通过/失败标准等的更自动化的解决方案。

我应该开始编写.mos脚本,还是有其他/更好的方式?

感谢。

4 个答案:

答案 0 :(得分:6)

我喜欢Openmodelica测试结果的外观,请参阅

不知道他们是怎么做的。显然,某些回归测试已经完成,存储了以前的结果,但不知道是来自某些测试库还是自制的。

总的来说,我发现有点悲伤/次优,没有"#34;每个人都可以/应该使用的测试解决方案(参见例如python生态系统中的nose或pytest),相反,每个人似乎都在制作他们自己的解决方案(或尝试),而你所发现的只是一些Modelica会议论文(通常没有一丝实施)或未知状态的未维护库。

在我的头顶,我发现/知道(其中一些已在其他答案中链接)

这似乎是https://xkcd.com/927/的病态实例。对于(非开发)用户来说,知道选择哪一个,哪些实际上是好的/可用的/可用的...... /

是不可能的。

(不是真正的测试,但也是相关的:使用ANTLR进行解析和语义分析:modelica.org/events/Conference2003/papers/h31_parser_Tiller.pdf)

答案 1 :(得分:3)

编写.mos脚本将是一种方式,但Michael Tiller还提供了一个小概念验证库:XogenyTest,您可以将其作为基础。

答案 2 :(得分:3)

如果你有Mathematica和SystemModeler,你可以从Mathematica运行模拟并使用VerificationTest“函数”来测试: VerificationTest[Abs[WSMSimulate["HelloWorld"]["x", .1] - .90] < .01]

然后可以在TestReport[]中模拟多个测试。

答案 3 :(得分:2)

我更喜欢使用.mos脚本,当您将测试框架进一步集成到持续集成工具中时,它可以很好地工作。 BuildingPy就是一个很好的例子,虽然它没有在CI工具中实现,但它仍然是一个很好的工具。

以下是良好框架设计的参考: UnitTesting: A Library for Modelica Unit Testing