求助:Modelica 3.5的TestCase注解在Dymola/OpenModelica的使用问题
Modelica 3.5 TestCase注解在Dymola/OpenModelica中的使用方案
你遇到的问题是因为TestCase注解并非直接修改常规模拟的行为,而是专门为工具的测试框架设计的,直接点击模拟按钮不会触发它的逻辑。以下是在Dymola和OpenModelica中正确使用的方法:
测试代码回顾
model Test Boolean a; equation a = time < 0.5; assert( a, "test has failed: time is above 0.5", level=AssertionLevel.error); annotation (TestCase(shouldPass=false)); end Test;
Dymola中的正确用法
- 要求Dymola版本≥2022(Modelica 3.5发布后,该版本开始完善支持TestCase注解)
- 必须通过Dymola的测试框架执行,而非常规模拟:
- 在Dymola的脚本窗口中调用测试函数:
DymolaCommands.Test.runTest(Test, shouldPass=false); - 框架会识别
TestCase(shouldPass=false)的设置,允许断言失败,不会终止测试流程,同时会记录该测试"预期失败"的结果。
- 在Dymola的脚本窗口中调用测试函数:
OpenModelica中的正确用法
- 要求OpenModelica版本≥1.19.0(该版本开始逐步兼容Modelica 3.5特性)
- 需要使用OMTest工具执行测试:
- 命令行方式:
omtest -m Test -shouldPass false - OMEdit图形界面方式:
打开模型后,通过菜单栏Tools→Run Test Case执行,工具会自动读取TestCase注解的参数,忽略断言失败并标记测试为"预期失败"。
- 命令行方式:
关键注意点
TestCase注解仅作用于测试场景,不会改变常规模拟的断言行为,直接模拟时断言仍会触发错误。- 务必使用对应工具的最新兼容版本,旧版本可能未完全实现Modelica 3.5的TestCase规范。
内容的提问来源于stack exchange,提问作者AngeliqueR
相关产品推荐
相关产品推荐

