使用 Flowable 在 Spring 应用程序中进行集成测试

Integration test in Spring application using Flowable

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

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

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

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

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

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

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

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