0

我需要使用 Flowable 为我的 Spring 应用程序编写一些集成测试。我的测试必须包含应用程序 BPMN 工作流逻辑。

我的问题是——我是否应该像在应用程序中那样在测试期间启动和部署普通的 Flowable 引擎?在官方文档中,我看到一些为单元测试准备的 Flowable 类,但没有用于集成。

在运行 IT 期间,启动真正的 Flowable 引擎不会导致性能问题吗?如果我需要在每个测试中分别运行它,我担心它们会花费很长时间。你如何在你的应用程序中处理这个问题?

4

1 回答 1

1

如果你问我,那么你绝对应该在测试期间启动并部署一个普通的 Flowable 引擎。您从文档中粘贴的链接是您进行测试的确切方式。请记住,您可以使用自己的配置,不需要特殊的 Spring 配置来进行测试。

在测试期间启动真正的 Flowable 引擎不会导致任何性能问题。Flowable 存储库中的所有测试实际上都是在单个测试中创建和销毁引擎的测试,而且速度非常快。在您的情况下,它会更快,因为您不会为每个测试启动引擎(Spring 应用程序上下文在测试之间缓存)。我还必须注意,即使您为每次测试启动引擎,时间也可以忽略不计,因为启动引擎非常快。

请记住,Spring 应用程序中的其他组件可能会减慢测试的启动速度。

作为flowable-spring模块中的参考,有 28 个测试类中的 76 个测试,其中每个测试类都有自己的 Spring 配置,这意味着测试之间没有 Spring 上下文重用。所有这些测试在我的本地机器上需要 55 秒。对于这些测试,您需要考虑到一些测试正在测试一些复杂的场景,其中异步执行器正在运行并且比通常花费更多的时间。你很可能不会有这样的测试。禁用这些特定测试(3 个测试类中的 3 个)后,测试时间会下降到 28 秒。

注意:如果您不使用@Deployment或依赖 Flowable 的自动部署功能,请确保您正在删除您在测试中创建的实例。这将确保来自一个测试的数据不会影响来自另一个测试的数据。

于 2019-04-14T07:16:39.177 回答