Java Maven不运行cumber测试

Java Maven不运行cumber测试,java,spring,maven,junit,cucumber,Java,Spring,Maven,Junit,Cucumber,我有一个Maven/SpringBoot2.3.3应用程序,其中包含JUnit5和Cucumber(v6.5.1)测试 问题是,我可以通过Maven运行OK单元测试和集成测试,但它不运行Cucumber 黄瓜赛跑者: package cucumber.salad.api.integration.cucumber; import org.junit.runner.RunWith; import io.cucumber.junit.Cucumber; import io.cucumber.junit

我有一个Maven/SpringBoot2.3.3应用程序,其中包含JUnit5和Cucumber(v6.5.1)测试

问题是,我可以通过Maven运行OK单元测试和集成测试,但它不运行Cucumber

黄瓜赛跑者:

package cucumber.salad.api.integration.cucumber;
import org.junit.runner.RunWith;
import io.cucumber.junit.Cucumber;
import io.cucumber.junit.CucumberOptions;

@RunWith(Cucumber.class)
@CucumberOptions(
        features = "classpath:features",
        plugin = { "pretty", "html:target/reports/cucumber", "json:target/cucumber.json", "usage:target/usage.jsonx", "junit:target/junit.xml" },
        extraGlue = "cucumber.salad.api.integration.cucumber.steps"
)
public class CucumberTest {
}
Cucumber Spring上下文配置:

package cucumber.salad.api.integration.cucumber;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.boot.web.server.LocalServerPort;
import org.springframework.test.context.ContextConfiguration;
import cucumber.salad.App;
import io.cucumber.spring.CucumberContextConfiguration;

@ContextConfiguration
@CucumberContextConfiguration
@SpringBootTest(classes = App.class, webEnvironment = WebEnvironment.RANDOM_PORT)
public class CucumberSpringContextConfig {
    
    @LocalServerPort
    protected int port;
}
步骤:

package cucumber.salad.api.integration.cucumber.steps;
import static org.assertj.core.api.Assertions.assertThat;
import org.springframework.beans.factory.annotation.Autowired;
import cucumber.salad.api.integration.cucumber.CucumberSpringContextConfig;
import cucumber.salad.api.service.DummyService;
import io.cucumber.java.en.*;
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class SaladStepDefinitions extends CucumberSpringContextConfig {
    
    // steps here
}
我在Maven pom.xml中使用Surefire和Failsafe:

以下是项目存储库:

我运行的命令:

mvn clean test integration-test
但测试执行没有任何迹象


我遗漏了什么或者做错了什么?

您使用的是cucumber junit,它集成了cucumber和junit 4。您也在使用JUnit5。JUnit5可以通过JUnit vintage引擎执行JUnit4测试。但是,您已将此引擎从类路径中排除


org.springframework.boot

如果您使用junit 5,那么您需要做的是添加两个cucumber依赖项(cucumber java和cucumber junit,通过从所有依赖项中排除junit 4),而不是
cucumber junit

此外,进口junit vintage引擎,以便cucumber可以使用它

说明:


如果导入JUnit4,那么所有使用jupiter(JUnit5)的测试都将被忽略,反之亦然。您可以通过在junit的每个版本中添加两个类(通过在每个类上添加每个版本的@test)来测试它。只有一个版本会运行。

我也有同样的问题;当我运行
mvn test
命令时,cucumber测试没有执行。我使用的是:

  • 弹簧靴:2.5.0
  • Java11(OpenJDKZULU11.0.11)
  • 依赖关系
    • 黄瓜芯:6.10.4
    • 黄瓜java:6.10.4
    • 黄瓜幼树:6.10.4
    • 黄瓜之春:6:10.4
我所做的是将junit jupiter引擎从
spring boot starter测试
依赖项中排除


org.springframework.boot
弹簧起动试验
测试
org.junit.jupiter
朱尼特木星发动机

您是否尝试过最新的Spring Boot版本?我认为这是与JUnit/Cucumber/Surefire的依赖项不匹配。我正在最新的Spring Boot(2.3.3)上运行。我将尝试使用旧版本。好吧,我用Cucumber 6.4.0和6.6.0尝试了Spring Boot 2.2.9和2.3.3,但这里没有运气!伟大的你挽救了这一天。现在很好用。我用补丁推了一个新的分支:正确junit jupiter引擎的依赖性是罪魁祸首。