我在AnyLogic上运行JUnit 4。在我的一个测试中,我需要访问运行该测试的Experiment
。有没有什么干净的方法可以在运行时访问它?例如,是否有类似于Experiment.getRunningExperiment()
的静态方法
发布于 2014-11-17 10:17:37
据我所知,没有一个静态方法(如果有的话,它可能会因为允许并行执行的多个运行的实验而变得复杂,尽管可能不是因为仍然只有一个实验,尽管会有线程安全问题)。
但是,您可以在模型中使用getEngine().getExperiment()
。您可能需要更多地解释您的使用上下文。如果使用AnyLogic专业版并将模型导出为独立运行,则无论如何都应该可以访问实验实例(如帮助“在没有UI的情况下从外部运行模型”中所述)。
您是否正在尝试从实验中运行JUnit测试?如果是这样,你的总体设计是什么?显然,JUnit在这种情况下并不适合,因为它“期望”实例化并运行要测试的东西。对于我的自动化测试(我不能单独导出它,因为我不使用AnyLogic专业版),我判断避免JUnit (毕竟它只是一个框架)并“直接”实现测试更容易(通过让我的模型组件编写输出,并在实验运行结束时,让实验将输出与预先准备的预期输出进行比较,并标记测试是否通过或失败)。使用AnyLogic专业版,你仍然可以导出独立的,并使用JUnit来运行“已经测试”的实验( JUnit测试检查实验的testPassed
布尔值设置在末尾或其他地方)。
你想要开始运行实验的事实表明,当运行可能正在执行时,你可能会这样做。如果是这样,你能解释一下你的需求吗?
https://stackoverflow.com/questions/26937432
复制相似问题