我正在使用AnyLogic运行JUnit 4。在我的一个测试中,我需要访问运行测试的Experiment
。有没有干净的方法在运行时访问它?例如,是否存在Experiment.getRunningExperiment()
答案 0 :(得分:1)
我所知道的并没有静态方法(如果有的话,可能会因为允许并行执行的多次运行实验而变得复杂,尽管可能不是因为那里仍然只有一个实验,虽然存在线程安全问题。)
但是,您可以在模型中使用中的getEngine().getExperiment()
。您可能需要详细了解您的使用情况。如果您正在使用AnyLogic Pro并将模型导出为独立运行,那么您应该可以访问实验实例(如帮助"从外部运行模型而无需UI和#34;)。
您是否尝试在实验中运行的JUnit测试?如果是这样,您的总体设计是什么?显然JUnit并不适合那种情况,因为它期望'要实例化并运行要测试的东西。对于我的自动化测试(我不能单独导出它,因为我不使用AnyLogic Pro),我认为更容易避免JUnit(毕竟它只是一个框架)并实现测试'直接' (通过让我的模型组件写入输出,并在实验运行结束时,让实验将输出与预先准备的预期值进行比较,并在测试通过或失败时标记)。使用AnyLogic Pro,您仍然可以单独导出并使用JUnit来运行“已经测试”#39;实验(使用JUnit测试检查实验,最后设置testPassed
布尔值或其他任何内容。
您希望运行实验这一事实表明,您可能会在运行可能正在执行时执行此操作。如果是这样,你能解释一下你的要求吗?