我正在Modelica中创建一个组件库,并希望对单元测试包的技术有所了解。
到目前为止,我有一个测试包,由一组模型组成,每个组件一个。每个测试模型都实例化一个组件,并将其连接到一些非常简单的辅助类,它们提供必要的输入和输出。
在OMEditor中以交互方式使用它时工作正常,但我正在寻找具有通过/失败标准等的更自动化的解决方案。
我应该开始编写.mos脚本,还是有其他/更好的方式?
感谢。
答案 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