0

我正在使用 AnyLogic 运行 JUnit 4。在我的一项测试中,我需要访问Experiment正在运行的测试。有什么干净的方法可以在运行时访问它吗?例如,是否有沿线的静态方法Experiment.getRunningExperiment()

4

1 回答 1

1

没有我知道的静态方法(如果有的话,它可能会因允许并行执行的多次运行实验而变得复杂,尽管可能不是,因为仍然有一个实验,尽管会有线程安全问题)。

但是,您可以getEngine().getExperiment()在模型中使用。您可能需要更多地解释您的使用上下文。如果您使用 AnyLogic Pro 并导出模型以独立运行,那么无论如何您都应该可以访问实验实例(如帮助“在没有 UI 的情况下从外部运行模型”中的说明)。

您是否尝试Experiment 中运行 JUnit 测试?如果是这样,您的总体设计是什么?显然,JUnit 在这种情况下表现不佳,因为它“期望”实例化并运行要测试的东西。对于我的自动化测试(我不能独立导出它,因为我不使用 AnyLogic Pro),我认为避免 JUnit(毕竟它只是一个框架)并“直接”实现测试(通过我的模型组件写入输出,并在实验运行结束时,让实验将输出与预先准备好的预期输出进行比较,并标记测试是通过还是失败)。使用 AnyLogic Pro,您仍然可以独立导出并使用 JUnit 运行“已经测试”testPassed布尔值设置在末尾或其他)。

您想要运行实验的事实表明您可能正在执行此操作,而运行可能正在执行。如果是这样,你能解释一下你的要求吗?

于 2014-11-17T10:17:36.797 回答