单元测试 Modelica 组件库?

Unit testing Modelica component library?

我正在 Modelica 中创建组件库,希望能提供一些有关单元测试包技术的信息。

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

这在 OMEditor 中以交互方式使用时效果很好,但我正在寻找具有 pass/fail 标准等的更自动化的解决方案。

我应该开始编写 .mos 脚本,还是有 another/better 方式?

谢谢。

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

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

这里有一个好的框架设计参考: UnitTesting: A Library for Modelica Unit Testing

如果您有 Mathematica 和 SystemModeler,您可以 运行 来自 Mathematica 的模拟并使用 VerificationTest "function" 来测试: VerificationTest[Abs[WSMSimulate["HelloWorld"]["x", .1] - .90] < .01]

然后可以在 TestReport[].

中模拟多个测试

我喜欢 Openmodelica 测试结果的样子,请参阅

虽然不知道他们是怎么做到的。显然进行了某种回归测试,存储了以前的结果,但不知道这是来自某个测试库还是 self-made.


总的来说,我觉得有点 sad/suboptimal,没有 "the one" 每个人 can/should 使用的测试解决方案(参见 [=77= 中的 nose 或 pytest) ] 生态系统),相反,每个人似乎都在编造自己的解决方案(或试图编造自己的解决方案),而您所找到的只是一些 Modelica 会议论文(通常没有实现的痕迹)或状态不明的未维护库。

在我的脑海中,我 found/know 的(有些已经链接到这里的其他答案中)

这似乎是 https://xkcd.com/927/ 的病态实例。 (non-dev) 用户几乎不可能知道选择哪个,实际上是 good/usable/available/...

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