Maven 不运行 Cucumber 测试

dan*_*tro 6 java junit spring cucumber maven

我有一个带有 JUnit 5 和 Cucumber (v6.5.1) 测试的 Maven / Spring Boot 2.3.3 应用程序。

问题是我可以通过 Maven 运行正常的单元测试和集成测试,但它不运行 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 {
}
Run Code Online (Sandbox Code Playgroud)

黄瓜 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;
}
Run Code Online (Sandbox Code Playgroud)

脚步:

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
}
Run Code Online (Sandbox Code Playgroud)

我在 Maven pom.xml 中使用 Surefire 和 Failsafe: https://github.com/danieldestro/cucumber-salad/blob/master/pom.xml

这是项目存储库:https://github.com/danieldestro/cucumber-salad

我运行的命令:

mvn clean test integration-test
Run Code Online (Sandbox Code Playgroud)

但 Cucumber 测试执行没有任何迹象。

我错过了什么或者做错了什么吗?

小智 9

我有同样的问题; 当我运行mvn test命令时,黄瓜测试没有执行。我正在使用:

  • 弹簧启动:2.5.0
  • Java 11(OpenJDK Zulu 11.0.11)
  • 依赖关系
    • 黄瓜核心:6.10.4
    • 黄瓜-java:6.10.4
    • 黄瓜-junit:6.10.4
    • 黄瓜弹簧:6:10.4

我所做的是将其junit-jupiter-enginespring-boot-starter-test依赖关系中排除。

       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.jupiter</groupId>
                    <artifactId>junit-jupiter-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
Run Code Online (Sandbox Code Playgroud)


mpk*_*nje 7

您正在使用cucumber-junit它将 Cucumber 与 JUnit 4 集成。您还使用 JUnit 5。JUnit 5 可以通过junit-vintage-engine. 但是,您已将该引擎从类路径中排除。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

包含 thejunit-vintage-engine或使用 thecucumber-junit-platform-engine代替cucumber-junit

  • 从 Spring Boot 2.4 开始,JUnit 5 的老式引擎已从 spring-boot-starter-test 中删除。如果我们仍然想使用 JUnit 4 编写测试,我们需要添加以下 Maven 依赖项: ``` &lt;dependency&gt; &lt;groupId&gt;org.junit.vintage&lt;/groupId&gt; &lt;artifactId&gt;junit-vintage-engine&lt;/artifactId&gt; &lt;scope&gt;test&lt;/scope&gt; &lt;exclusions&gt; &lt;exclusion&gt; &lt;groupId&gt;org.hamcrest&lt;/groupId&gt; &lt;artifactId&gt;hamcrest-core&lt;/artifactId&gt; &lt;/exclusion&gt; &lt;/exclusions&gt; &lt;/dependency&gt; ``` 更多:https://www.baeldung.com/spring-boot-testing#1-junit-4 (2认同)