首页 > 解决方案 > 无法在 spring boot jar 中运行命令 cucumber - 未找到后端。请确保您的 CLASSPATH 上有一个后端模块

问题描述

我正在尝试通过 cucumber.api.cli.Main.main 运行黄瓜,但它给出了以下错误(请注意,在 IDE 中它工作正常)

Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:109)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88)
Caused by: cucumber.runtime.CucumberException: No backends were found. Please make sure you have a backend module on your CLASSPATH.
        at cucumber.runtime.Runtime.<init>(Runtime.java:81)
        at cucumber.runtime.Runtime.<init>(Runtime.java:70)
        at cucumber.runtime.Runtime.<init>(Runtime.java:66)
        at cucumber.api.cli.Main.run(Main.java:35)
        at cucumber.api.cli.Main.main(Main.java:18)
        at br.com.xxx.service.xxx.test.TesteCucumber.main(TesteCucumber.java:17)
        ... 8 more

我的主要课程

@Configuration
@EnableAutoConfiguration
@ComponentScan(basePackages = { "br.com.xxx" })
@SpringBootApplication
public class TesteCucumber {

    public static void main(String[] args) throws Throwable {
        String[] arguments = {"..\\src\\test\\resources\\","-g", "br.com.xxx.service.xxx.test.cucumber.steps"};
        cucumber.api.cli.Main.main(arguments);
    }
}

我的 pom 配置

        <properties><cucumber.version>1.2.5</cucumber.version></properties>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>${cucumber.version}</version>
        </dependency>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-junit</artifactId>
            <version>${cucumber.version}</version>
        </dependency>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>gherkin</artifactId>
            <version>2.12.2</version>
        </dependency>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-spring</artifactId>
            <version>${cucumber.version}</version>
        </dependency>

spring boot jar中的所有依赖项都可以

在此处输入图像描述

我已经在一些堆栈中搜索过类似的问题,但我没有得到答案

你能帮我解决这个错误吗?提前致谢。

标签: javaspringspring-bootcucumber

解决方案


我以这种方式解决了问题

在 pom.xml 中,我配置了 maven 以添加主类 cucumber.api.cli.Main

    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
              <archive>
                <manifest>
                  <addClasspath>true</addClasspath>
                  <classpathPrefix>lib/</classpathPrefix>
                  <mainClass>cucumber.api.cli.Main</mainClass>
                </manifest>
              </archive>
            </configuration>
          </plugin>
        </plugins>

我删除了 TesteCucumber.class

我运行 mvn 包

我将所有 jar 依赖项复制到文件夹 /lib/

我运行下面的命令行:

java -jar myjar.jar --glue br.com.xxx.service.hub.test.cucumber.steps "C:\...\src\test\resources\file.feature"

推荐阅读