从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
相关产品推荐
相关产品推荐

