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

从Jar包运行Cucumber测试用例时无法找到步骤定义的问题求助

从Jar包运行Cucumber测试用例时无法找到步骤定义的问题求助

大家好,我现在遇到一个棘手的问题:把Cucumber测试打包成Jar包运行时,程序找不到对应的步骤定义,所有场景都显示未定义状态。下面是我的具体配置和操作流程,希望能得到大家的帮助:

项目目录结构

project-root
│
├── src
│   ├── main
│   │   └── java
│   │       └── com.example.package
│   │            └── Main.java (Cucumber CLI usage)
│   └── test
│       ├── java
│       │   └── com.example.package
│       │       └── runner
│       │           └── YourTestRunner.java (Test Runner class)
│       │       └── stepdefinition
│       │           └── YourStepDefinitions.java (Cucumber step definitions)
│       └── resources
│           └── features
│               └── your.feature

启动类代码

因为原来没有可执行的main方法,我专门写了一个Main类来调用Cucumber CLI,代码如下:

package com.example;
import io.cucumber.core.cli.Main;

public class Main {
    public static void main(String[] args) throws Throwable {
        // Pass your command-line arguments to the Cucumber CLI Main class
        String[] cucumberArgs = {
            "--glue", "com.example.package.runner.YourTestRunner",
            "--glue", "com.example.package.stepdefinition", 
            "classpath:/features",
            "-t", "@mytag"
        };
        Main.run(cucumberArgs, Thread.currentThread().getContextClassLoader());
    }
}

Gradle构建配置

我的build.gradle文件配置如下:

plugins {
    id 'java'
    id 'com.springframework.boot' version ''
    id 'io.spring.dependency-management' version ''
    id 'com.github.johnrengelman.shadow' version '7.1.2' 
 
}

repositories {
    jcenter()
}

dependencies {
    testImplementation "io.cucumber:cucumber-java8:7.xx"
    testImplementation "io.cucumber:cucumber-java:7.xx"
    implementation "io.cucumber:cucmber-spring:7.xx"
}

test {
    useJUnitPlatform()
}


task buildCustomFatJar(type: Jar) {
    zip64 = true
    from sourceSets.main.output
    from sourceSets.test.output
    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }

    // Set the main class for the JAR
    manifest {
        attributes 'Main-Class': ' com.example.package.Main' 
    }
    with jar
}

运行命令与结果

我用以下命令运行Jar包:

java -jar custom-jar-name.jar

运行后得到的结果是:

5 Scenarios (5 Undefined)
10 Steps (5 skipped, 5 undefined)

我本来期望通过Jar包能正常执行所有测试用例,但现在所有步骤定义都找不到,有没有大佬能帮我排查一下问题所在?

备注:内容来源于stack exchange,提问作者Amit Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 12:09:50