我正在Modelica中创建一个组件库,并希望对单元测试包的技术有所了解 .
到目前为止,我有一个测试包,由一组模型组成,每个组件一个 . 每个测试模型都实例化一个组件,并将其连接到一些非常简单的辅助类,这些辅助类提供必要的输入和输出 .
这在OMEditor中以交互方式使用时工作正常,但我正在寻找具有通过/失败标准等的更自动化的解决方案 .
我应该开始编写.mos脚本,还是有其他/更好的方法?
谢谢 .
我喜欢Openmodelica测试结果的外观,请参阅
https://test.openmodelica.org/libraries/MSL_3.2.1/BuildModelRecursive.html
点击红色单元格:https://test.openmodelica.org/libraries/MSL_3.2.1/files/Modelica.Electrical.Analog.Examples.AD_DA_conversion.diff.html
选择"javascript"表示失败信号:https://test.openmodelica.org/libraries/MSL_3.2.1/files/Modelica.Electrical.Analog.Examples.AD_DA_conversion.diff.resistor.v.html
但不知道他们是怎么做的 . 显然,已经完成了某种回归测试,并存储了以前的结果,但不知道这是来自某些测试库还是自制的 .
总的来说,我发现它有点悲伤/次优,没有每个人都可以/应该使用的“一个”测试解决方案(参见例如python生态系统中的鼻子或pytest),相反,每个人似乎都在制定他们自己的解决方案(或者试图),你找到的只是一些Modelica Session 论文(通常没有实施的痕迹)或未知状态的未维护的库 .
在我的头顶,我发现/知道(一些已经链接在其他答案在这里)
OM testing
JModelica testing(似乎只测试编译错误?)
Xogeny test(库本身的一些测试对我来说失败 . 另外,似乎没有包括测试运行器)
MoUnit(Fraunhofer的某些内容,而不是公开的 - 可能在OneWind / OneModelica中?)
UnitTesting(显然是XogenyTest的某种前身 . 此外,没有找到任何来源/实现)
Optimica Testing Toolkit(显然是commercial product by Modelon)
SystemModeler VerificationTest
buildingspy Python包,用于regression testing等 . 在伯克利Modelica建筑图书馆的保护伞下 . (仅使用Dymola进行模拟)
Modelica_Requirements library - 定义模拟的要求 . (声称是开源和实施,但显然在任何地方都没有)
......我确信还有更多我忘记或不知道的事情
这似乎是https://xkcd.com/927/的病态实例 . 对于(非开发)用户来说,有必要知道选择哪一个,哪些实际上是好的/可用的/可用的......
(不是真正的测试,但也是相关的:使用ANTLR进行解析和语义分析:modelica.org/events/Conference2003/papers/h31_parser_Tiller.pdf)
编写一个 .mos 脚本将是一种方式,但Michael Tiller还有一个小概念验证库:XogenyTest,您可以将其作为基础 .
.mos
我更喜欢使用 .mos 脚本,当您将测试框架进一步集成到持续集成工具中时,它可以很好地工作 . BuildingPy就是一个很好的例子,尽管它仍然是一个很好的工具 .
这是一个很好的框架设计的参考:UnitTesting: A Library for Modelica Unit Testing
如果您有Mathematica和SystemModeler,您可以从Mathematica运行模拟并使用 VerificationTest "function"来测试: VerificationTest[Abs[WSMSimulate["HelloWorld"]["x", .1] - .90] < .01] .
VerificationTest
VerificationTest[Abs[WSMSimulate["HelloWorld"]["x", .1] - .90] < .01]
然后可以在 TestReport[] 中模拟多个测试 .
TestReport[]
4 回答
我喜欢Openmodelica测试结果的外观,请参阅
https://test.openmodelica.org/libraries/MSL_3.2.1/BuildModelRecursive.html
点击红色单元格:https://test.openmodelica.org/libraries/MSL_3.2.1/files/Modelica.Electrical.Analog.Examples.AD_DA_conversion.diff.html
选择"javascript"表示失败信号:https://test.openmodelica.org/libraries/MSL_3.2.1/files/Modelica.Electrical.Analog.Examples.AD_DA_conversion.diff.resistor.v.html
但不知道他们是怎么做的 . 显然,已经完成了某种回归测试,并存储了以前的结果,但不知道这是来自某些测试库还是自制的 .
总的来说,我发现它有点悲伤/次优,没有每个人都可以/应该使用的“一个”测试解决方案(参见例如python生态系统中的鼻子或pytest),相反,每个人似乎都在制定他们自己的解决方案(或者试图),你找到的只是一些Modelica Session 论文(通常没有实施的痕迹)或未知状态的未维护的库 .
在我的头顶,我发现/知道(一些已经链接在其他答案在这里)
OM testing
JModelica testing(似乎只测试编译错误?)
Xogeny test(库本身的一些测试对我来说失败 . 另外,似乎没有包括测试运行器)
MoUnit(Fraunhofer的某些内容,而不是公开的 - 可能在OneWind / OneModelica中?)
UnitTesting(显然是XogenyTest的某种前身 . 此外,没有找到任何来源/实现)
Optimica Testing Toolkit(显然是commercial product by Modelon)
SystemModeler VerificationTest
buildingspy Python包,用于regression testing等 . 在伯克利Modelica建筑图书馆的保护伞下 . (仅使用Dymola进行模拟)
Modelica_Requirements library - 定义模拟的要求 . (声称是开源和实施,但显然在任何地方都没有)
......我确信还有更多我忘记或不知道的事情
这似乎是https://xkcd.com/927/的病态实例 . 对于(非开发)用户来说,有必要知道选择哪一个,哪些实际上是好的/可用的/可用的......
(不是真正的测试,但也是相关的:使用ANTLR进行解析和语义分析:modelica.org/events/Conference2003/papers/h31_parser_Tiller.pdf)
编写一个
.mos
脚本将是一种方式,但Michael Tiller还有一个小概念验证库:XogenyTest,您可以将其作为基础 .我更喜欢使用
.mos
脚本,当您将测试框架进一步集成到持续集成工具中时,它可以很好地工作 . BuildingPy就是一个很好的例子,尽管它仍然是一个很好的工具 .这是一个很好的框架设计的参考:UnitTesting: A Library for Modelica Unit Testing
如果您有Mathematica和SystemModeler,您可以从Mathematica运行模拟并使用
VerificationTest
"function"来测试:VerificationTest[Abs[WSMSimulate["HelloWorld"]["x", .1] - .90] < .01]
.然后可以在
TestReport[]
中模拟多个测试 .