【发布时间】:2015-01-12 06:48:31
【问题描述】:
我正在运行带有 AnyLogic 的 JUnit 4。在我的一项测试中,我需要访问运行测试的Experiment。有什么干净的方法可以在运行时访问它吗?例如,是否有类似于Experiment.getRunningExperiment() 的静态方法?
【问题讨论】:
标签: anylogic
我正在运行带有 AnyLogic 的 JUnit 4。在我的一项测试中,我需要访问运行测试的Experiment。有什么干净的方法可以在运行时访问它吗?例如,是否有类似于Experiment.getRunningExperiment() 的静态方法?
【问题讨论】:
标签: anylogic
我不知道有什么静态方法(如果有的话,它可能会因为允许并行执行的多次运行实验而变得复杂,尽管可能不是,因为仍然有一个实验,尽管会有线程安全问题)。
但是,您可以在模型内使用getEngine().getExperiment()。您可能需要更多地解释您的使用上下文。如果您使用 AnyLogic Pro 并导出模型以独立运行,那么无论如何您都应该可以访问实验实例(如帮助“在没有 UI 的情况下从外部运行模型”中)。
您是否尝试在实验内运行 JUnit 测试?如果是这样,您的总体设计是什么?显然,JUnit 在这种情况下表现不佳,因为它“期望”实例化并运行要测试的东西。对于我的自动化测试(我不能独立导出它,因为我不使用 AnyLogic Pro),我认为避免 JUnit(毕竟它只是一个框架)并“直接”实现测试(通过我的模型组件写入输出,并在实验运行结束时,让实验将输出与预先准备好的预期输出进行比较,并标记测试是通过还是失败)。使用 AnyLogic Pro,您仍然可以独立导出并使用 JUnit 运行“已经测试”的实验(JUnit 测试检查实验是否在末尾设置了 testPassed 布尔值或其他)。
您希望运行实验这一事实表明,您可能正在执行此操作,而运行可能正在执行。如果是这样,你能解释一下你的要求吗?
【讨论】:
getEngine(),但问题是我必须首先给他们一个Engine,这就是我需要打电话的原因。现在我有一个可行的“解决方案”,但它肯定是一个 hack。