我需要使用Flowable为我的Spring应用程序编写一些集成测试。我的测试必须包括应用程序BPMN工作流逻辑。
我的问题是-我应该像在应用程序中那样在测试过程中启动和部署普通的Flowable引擎吗?在official documentation中,我看到一些为单元测试准备的Flowable类,但没有为集成做任何准备。
在运行IT时,启动真正的Flowable引擎会不会导致性能问题?恐怕如果我需要分别对每个测试运行它们,它们将花费很长时间。您如何在应用程序中处理此问题?
答案 0 :(得分:1)
如果您问我,那么您绝对应该在测试期间启动并部署普通的Flowable引擎。您从文档中粘贴的链接是进行测试的确切方法。请记住,您可以使用自己的配置,测试不需要特殊的Spring配置。
启动真正的Flowable引擎不会在测试过程中引起任何性能问题。实际上,Flowable存储库中的所有测试都是在单个测试中创建和销毁引擎的测试,而且速度非常快。在您的情况下,这将更快,因为您不会为每个测试启动引擎(Spring应用程序上下文在测试之间进行缓存)。我还必须注意,即使每次测试都启动引擎,启动引擎的速度也相当快。
请记住,Spring应用程序中的其他组件可能会减慢测试的启动速度。
作为flowable-spring模块中的参考,在28个测试类中有76个测试,其中每个测试类都有自己的Spring配置,这意味着测试之间没有Spring上下文重用。所有这些测试在我的本地计算机上花费55s。对于这些测试,您需要考虑到某些测试正在测试异步执行程序正在运行并且比平时花费更多时间的复杂场景。您很可能不会进行此类测试。在禁用那些特定测试的情况下(3个测试类别中的3个),测试时间降至28s。
注意事项:如果您不使用@Deployment
或依赖于Flowable的自动部署功能,请确保删除要在测试中创建的实例。这样可以确保来自一个测试的数据不会影响来自另一个测试的数据。