在 Cucumber 测试之前启动 Spring 引导应用程序一次 运行

start the Spring Boot application once, before Cucumber tests run

我正在使用 Cucumber 为我的 Spring 引导应用程序 (v2.2.1) 编写一些 BDD 测试,它工作正常。

但是,我遇到了一些性能问题,因为应用程序会针对功能文件中的每个场景获取 started/stopped:我将内存数据库与 Liquibase 一起使用,因此对于每个场景,都会执行此操作(需要几秒钟)。

当然,目前可以保证我的场景被很好地隔离。也许在某些情况下我会想要这种行为,但现在,我的大部分功能文件都会受益于一次性设置:因为每个场景在内存数据库中设置它需要的不同记录(没有重叠),理论上我可以在单个 Spring 启动应用程序 运行 上并行执行我的场景。

我看到了 https://blog.codecentric.de/en/2017/02/integration-testing-strategies-spring-boot-microservices-part-2/ ,但它需要先构建应用程序,然后从 jar 启动它。

有没有办法做同样的事情,但应用程序从 Cucumber runner 启动一次?有什么例子吗?

感谢@mpkorstanje link,我找到了问题所在:在尝试在我的项目中复制建议时,我发现扫描的其中一个配置有 @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)注释.. 这就是问题所在。现在我需要看看这里建议的解决方法:@DirtiesContext tears context down after every cucumber test scenario, not class