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

通过Spring Boot jar运行Cucumber测试报错,如何在执行前解压应用?

手动解压执行方案(临时调试场景)
  • 首先执行解压命令,将Spring Boot可执行jar解压到本地目录
    Linux/Mac命令:unzip eq-data-0.0.1.jar -d eq-data-unpacked
    Windows PowerShell命令:Expand-Archive -Path eq-data-0.0.1.jar -DestinationPath eq-data-unpacked
  • 进入解压后的目录:cd eq-data-unpacked
  • 执行测试命令,注意Windows环境下类路径分隔符需替换为;
    java -cp "BOOT-INF/classes:BOOT-INF/lib/*" io.cucumber.core.cli.Main \
    --glue com.xyz \
    --plugin pretty \
    classpath:features
    
构建时自动配置解压方案(CI/CD流程场景)

不需要全量解压整个jar,只需要在Spring Boot打包插件中配置Cucumber需要扫描的依赖包为启动时自动解压即可:

Maven配置

修改pom.xml中spring-boot-maven-plugin配置:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <requiresUnpack>
            <!-- 配置所有Cucumber相关依赖,以及需要被扫描的业务包所在的jar -->
            <dependency>
                <groupId>io.cucumber</groupId>
                <artifactId>cucumber-java</artifactId>
            </dependency>
            <dependency>
                <groupId>io.cucumber</groupId>
                <artifactId>cucumber-spring</artifactId>
            </dependency>
            <dependency>
                <groupId>com.xyz</groupId>
                <artifactId>xyz-service-starter</artifactId>
            </dependency>
        </requiresUnpack>
    </configuration>
</plugin>

配置完成后重新打包生成的jar,可直接用java -jar命令运行,不需要手动解压。

Gradle配置

修改build.gradle配置:

bootJar {
    requiresUnpack 'io.cucumber:cucumber-java', 'io.cucumber:cucumber-spring', 'com.xyz:xyz-service-starter'
}
自动解压执行脚本方案(批量运行场景)

可以编写shell脚本自动完成解压、执行、清理全流程:

#!/bin/bash
# 替换为你的实际jar名称
JAR_NAME="eq-data-0.0.1.jar"
UNPACK_TMP_DIR="cucumber-run-tmp"

# 清理旧临时目录
rm -rf ${UNPACK_TMP_DIR}
mkdir ${UNPACK_TMP_DIR}

# 静默解压jar
unzip -q ${JAR_NAME} -d ${UNPACK_TMP_DIR}

# 进入目录执行测试
cd ${UNPACK_TMP_DIR}
java -cp "BOOT-INF/classes:BOOT-INF/lib/*" io.cucumber.core.cli.Main \
  --glue com.xyz \
  --plugin pretty \
  classpath:features

# 清理临时目录
cd ..
rm -rf ${UNPACK_TMP_DIR}

注意:如果你的测试类、Feature文件没有打包入主jar,需要在-cp参数中额外添加对应文件所在的目录路径,保证Cucumber可以正常扫描到资源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 05:06:05