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

Jus*_*oob 3 spring cucumber gradle cucumber-java

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

这是我的模块的层次结构在此输入图像描述

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

这是我的CucumberSpringContextConfiguration班级

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@CucumberContextConfiguration
public class CucumberSpringContextConfiguration {
}
Run Code Online (Sandbox Code Playgroud)

这是我的CucumberIntegrationTest班级

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

我尝试使用主类(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.
Run Code Online (Sandbox Code Playgroud)

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

mpk*_*nje 5

io.cucumber.core.cli.Main.run(Main.java:92) at io.cucumber.core.cli.Main.main(Main.java:34) 
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪的这一部分显示您正在使用 Cucumber CLI 而不是CucumberIntegrationTest. 所以你可能正在通过 IDEA 运行你的功能文件。大概您单击了功能文件装订线中的绿色播放图标。

不幸的是 Intelij IDEA 做出了一些假设和错误的猜测。如果您查看创建的运行配置,您将看到有一个命令行,--glue其参数可能指向features。您必须手动更改此设置。

目前没有必要猜测这个论点,我已经要求 Intelij IDEA 背后的团队在IDEA-243074--glue上修复这个问题,但到目前为止这个问题的关注度为零。你可以投票,也许会发生一些事情。

您还可以通过将功能文件放在不同的位置(例如src/test/resources/com/#####/########/cucumberspringboot. 因为这是 Ingelij IDEA 的父包,cucumberglue不太可能把事情搞砸。

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