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

如何在无IDE环境运行Selenium+Java+Cucumber测试并打包为Jar

我来帮你搞定这个问题!用cucumber.api.cli.Main确实是脱离IDE、在控制台或通过可执行Jar运行Cucumber测试的核心方案,下面给你一步步拆解具体实现:

一、直接从控制台运行Cucumber测试

这种方式适合快速验证,不需要打包Jar,步骤如下:

  1. 确保依赖完整
    先确认你的项目已经引入了Cucumber的核心依赖(比如cucumber-java、cucumber-junit等),如果用Maven管理,pom.xml里的依赖要齐全。

  2. 构造Java命令
    用java命令直接调用cucumber.api.cli.Main,核心是要指定类路径、step definitions的包路径和feature文件路径:

    # Linux/Mac系统
    java -cp "target/classes:target/test-classes:~/.m2/repository/io/cucumber/*/*" cucumber.api.cli.Main --glue com.yourcompany.steps src/test/resources/features
    
    # Windows系统(路径分隔符用;)
    java -cp "target\classes;target\test-classes;C:\Users\YourName\.m2\repository\io\cucumber\*\*" cucumber.api.cli.Main --glue com.yourcompany.steps src/test/resources/features
    
    • -cp:指定类路径,需要包含你的项目编译类、测试类,以及所有Cucumber相关依赖包
    • --glue:必填参数,指定你编写Given/When/Then步骤的类所在的包
    • 最后是你的feature文件所在的目录或具体文件路径
二、打包成可执行Jar运行

如果要把测试打包成独立Jar分发运行,推荐用Maven的shade插件(它会把所有依赖打包进同一个Jar,避免运行时找不到类),步骤如下:

  1. 配置Maven Shade插件
    在项目的pom.xml的<build><plugins>节点下添加以下配置:

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-shade-plugin</artifactId>
      <version>3.4.1</version>
      <executions>
        <execution>
          <phase>package</phase>
          <goals>
            <goal>shade</goal>
          </goals>
          <configuration>
            <!-- 指定主类为Cucumber的CLI入口 -->
            <transformers>
              <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                <!-- 注意:如果是Cucumber 6+版本,主类是io.cucumber.core.cli.Main -->
                <mainClass>cucumber.api.cli.Main</mainClass>
              </transformer>
            </transformers>
            <!-- 排除签名文件,避免打包冲突 -->
            <filters>
              <filter>
                <artifact>*:*</artifact>
                <excludes>
                  <exclude>META-INF/*.SF</exclude>
                  <exclude>META-INF/*.DSA</exclude>
                  <exclude>META-INF/*.RSA</exclude>
                </excludes>
              </filter>
            </filters>
            <!-- 确保feature文件被打包进Jar -->
            <resources>
              <resource>
                <directory>src/test/resources</directory>
              </resource>
            </resources>
          </configuration>
        </execution>
      </executions>
    </plugin>
    
  2. 打包Jar
    在控制台执行Maven命令完成打包:

    mvn clean package
    

    打包完成后,在target目录下会生成一个带-shaded后缀的Jar文件(比如your-project-1.0-SNAPSHOT-shaded.jar)。

  3. 运行可执行Jar
    运行Jar时,直接传递Cucumber的参数即可,比如:

    java -jar your-project-1.0-SNAPSHOT-shaded.jar --glue com.yourcompany.steps src/test/resources/features
    
三、常用的Cucumber CLI参数补充

除了--glue和特征文件路径,你还可以加这些实用参数:

  • --format:指定测试报告格式,比如生成HTML报告:--format html:target/cucumber-report
  • --tags:只运行带指定标签的测试用例,比如:--tags @smoke
  • --dry-run:检查step definitions和feature文件是否匹配,不实际执行测试

举个带报告和标签的完整命令例子:

java -jar your-project-1.0-SNAPSHOT-shaded.jar --glue com.yourcompany.steps --format html:target/report --tags @smoke src/test/resources/features

注意:如果你的Cucumber版本是6.x及以上,cucumber.api.cli.Main已经被迁移到io.cucumber.core.cli.Main,记得把主类和命令里的包名对应修改哦!

内容的提问来源于stack exchange,提问作者Mark 100F

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:30:46