IntelliJ 中的 Cucumber 配置错误:请使用一些上下文配置注释胶水类

问题描述 投票:0回答:2

所以我最近开始研究 Cucumber 并一直面临这个问题。

这是我的模块的层次结构enter image description here

如您所见,这是我的 Spring Boot 应用程序(AcceptanceTests)中的子模块,因此其中没有主要方法。

这是我的

CucumberSpringContextConfiguration

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@CucumberContextConfiguration
public class CucumberSpringContextConfiguration {
}

这是我的

CucumberIntegrationTest

@RunWith(Cucumber.class)
@CucumberOptions(
  features = "src\test\resources\feature",       
  plugin = {"pretty", "html:target\\cucumber"}, 
  glue = "com.#####.########.cucumberspringboot.cucumberglue"
)
public class CucumberIntegrationTest {}

我尝试使用主类(src/main/java)运行此代码,代码编译成功。但由于这不是我的要求,我删除了它,现在我遇到了以下错误 -

SEVERE: Exception while executing pickle
java.util.concurrent.ExecutionException:
io.cucumber.core.backend.CucumberBackendException: Please annotate a
glue class with some context configuration.

  For example:

     @CucumberContextConfiguration    
     @SpringBootTest(classes = TestConfig.class)    
     public class CucumberSpringConfiguration { } 

  Or: 
  
     @CucumberContextConfiguration
     @ContextConfiguration( ... )   
     public class CucumberSpringConfiguration { }   
  
  at java.util.concurrent.FutureTask.report(FutureTask.java:122)
  at java.util.concurrent.FutureTask.get(FutureTask.java:192)
  at io.cucumber.core.runtime.Runtime.run(Runtime.java:93)
  at io.cucumber.core.cli.Main.run(Main.java:92) 
  at io.cucumber.core.cli.Main.main(Main.java:34) 
Caused by: io.cucumber.core.backend.CucumberBackendException: 
  Please annotate a glue class with some context configuration.

请建议如何在不使用主类的情况下实现此目的。

spring gradle cucumber cucumber-java
2个回答
6
投票
io.cucumber.core.cli.Main.run(Main.java:92) at io.cucumber.core.cli.Main.main(Main.java:34) 

堆栈跟踪的这一部分显示您正在使用 Cucumber CLI,而不是

CucumberIntegrationTest
。所以您可能正在通过 IDEA 运行您的功能文件。大概您单击了功能文件装订线中的绿色播放图标。

不幸的是 Intelij IDEA 做出了一些假设和错误的猜测。如果您查看创建的运行配置,您将看到有一个带有

--glue
参数的命令行,该参数可能指向
features
。您必须手动更改此设置。

目前无需猜测

--glue
参数,我已经要求 Intelij IDEA 背后的团队在 IDEA-243074 修复此问题,但迄今为止该问题的关注度为零。你可以投票,也许会发生一些事情。

您还可以通过将功能文件放在不同的位置(例如,

src/test/resources/com/#####/########/cucumberspringboot
。因为这是
cucumberglue
Ingelij IDEA 的父包,不太可能把事情搞砸。

另请注意:您当前正在使用 JUnit 4 来运行 Cucumber。 Spring Boot 更喜欢使用 JUnit 5。您应该使用 Cucumber JUnit Platform Engine。 您可以在此处找到最小示例


0
投票

您需要添加

@ContextConfiguration(classes = {YourSpringClass.class})
,以便当 Cucumber 上下文启动时,它会随之启动您的 Spring 项目。

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@CucumberContextConfiguration
@ContextConfiguration(classes = {YourSpringClass.class})
public class CucumberSpringContextConfiguration {
}

PS:我遇到了同样的问题并已解决。

© www.soinside.com 2019 - 2024. All rights reserved.