You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过mvn test命令结合Mockito同时运行Cucumber与JUnit测试?

同时运行Cucumber与JUnit测试的Maven配置方案

要在一次mvn test执行中同时跑Cucumber(带@When/@Then等注解的步骤)和JUnit(@Test注解的单元测试),核心是通过Maven Surefire插件统一管理两类测试的执行,具体步骤如下:

1. 确保依赖配置正确

在项目的pom.xml中添加JUnit 5和Cucumber的相关依赖,版本可根据实际需求调整:

<dependencies>
    <!-- JUnit 5 核心依赖 -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.9.2</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.9.2</version>
        <scope>test</scope>
    </dependency>

    <!-- Cucumber JUnit 5 集成依赖 -->
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-java</artifactId>
        <version>7.11.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-junit-platform-engine</artifactId>
        <version>7.11.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-suite</artifactId>
        <version>1.9.2</version>
        <scope>test</scope>
    </dependency>
</dependencies>

2. 创建Cucumber测试套件入口类

在测试源码目录(如src/test/java)下创建一个Cucumber测试套件类,用来指定feature文件位置和运行配置:

import org.junit.platform.suite.api.ConfigurationParameter;
import org.junit.platform.suite.api.IncludeEngines;
import org.junit.platform.suite.api.SelectFeatures;
import org.junit.platform.suite.api.Suite;
import static io.cucumber.junit.platform.engine.Constants.PLUGIN_PROPERTY_NAME;

@Suite
@IncludeEngines("cucumber")
@SelectFeatures("src/test/resources/features") // 替换为你实际的feature文件路径
@ConfigurationParameter(key = PLUGIN_PROPERTY_NAME, value = "pretty") // 可选:指定测试报告格式
public class CucumberTestSuite {
}

3. 配置Maven Surefire插件

在pom.xml的build/plugins节点下配置Surefire插件,让它同时扫描普通JUnit测试类和Cucumber测试套件:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>3.1.2</version>
            <configuration>
                <!-- 扫描所有符合命名规则的测试类,覆盖普通JUnit测试和Cucumber套件 -->
                <includes>
                    <include>**/*Test.java</include>
                    <include>**/*Tests.java</include>
                    <include>**/*TestSuite.java</include>
                </includes>
            </configuration>
        </plugin>
    </plugins>
</build>

4. 执行测试

直接运行命令:

mvn test

此时Surefire会自动执行所有标注@Test的JUnit单元测试,以及通过CucumberTestSuite触发的所有Cucumber feature测试。

注意事项

  • 确保@SelectFeatures指定的路径与实际feature文件位置一致,比如你的feature文件放在src/test/resources/com/yourproject/features下,需修改对应路径。
  • 保持Cucumber和JUnit Platform的版本兼容,避免因版本不匹配导致运行错误。

内容的提问来源于stack exchange,提问作者zepolik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 22:52:47