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

Spring boot 在测试运行之前,启动Spring引导应用程序一次,spring-boot,cucumber-jvm,Spring Boot,Cucumber Jvm,我正在为我的Spring Boot应用程序(v2.2.1)编写一些使用Cucumber的BDD测试,它工作正常 但是,我面临一些性能问题,因为应用程序在功能文件中的每个场景中都会启动/停止:我使用内存中的DB with Liquibase,因此对于每个场景,都会执行该操作(需要几秒钟) 当然,目前可以保证我的场景是非常孤立的。。也许在某些情况下,我会想要这种行为,但现在,我的大多数功能文件都将受益于一次性设置:由于每个场景在内存数据库中设置了它所需的不同记录(没有重叠),理论上我可以在运行的单个

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

但是,我面临一些性能问题,因为应用程序在功能文件中的每个场景中都会启动/停止:我使用内存中的DB with Liquibase,因此对于每个场景,都会执行该操作(需要几秒钟)

当然,目前可以保证我的场景是非常孤立的。。也许在某些情况下,我会想要这种行为,但现在,我的大多数功能文件都将受益于一次性设置:由于每个场景在内存数据库中设置了它所需的不同记录(没有重叠),理论上我可以在运行的单个Spring引导应用程序上并行执行我的场景

我看到了,但它需要先构建应用程序,然后从jar启动它


有没有办法做到这一点,但应用程序只从Cucumber runner启动一次?有什么例子吗

多亏了@mpkorstanje link,我才发现问题:在我的项目中尝试复制建议时,我发现被扫描的配置中有一个
@DirtiesContext(classMode=DirtiesContext.classMode.AFTER_CLASS)
注释。。这就是问题所在。现在,我需要看看这里建议的解决方法:

Cucumber v5 with
Cucumber spring
将启动单个应用程序上下文,并像JUnit一样在线程之间共享它。