Cucumber和Spring boot集成出现错误

2024-01-07

Spring boot和cucumber集成,当我将该项目打包为jar时,使用mvn package命令并生成advvic-1.0.jar。但是,如果我运行这个罐子

java -jar target/advvic-1.0.jar

我收到此错误:

引起原因:cucumber.runtime.CucumberException:未找到后端。请确保您的 CLASSPATH 上有后端模块。

但是,如果我提取这个 jar,我会在 lib 文件夹中找到 cucumber-java.jar

这是我的 pom :

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.advvic.cucumber.spring</groupId>
    <artifactId>advvic</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>

    <name>cucumber-spring-boot</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>

        <spring-boot.version>1.4.1.RELEASE</spring-boot.version>

        <cucumber.version>1.2.5</cucumber.version>
        <selenium.version>3.0.1</selenium.version>
        <htmlunit.version>2.13</htmlunit.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-jdbc</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>

        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>${cucumber.version}</version>
        </dependency>

        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-core</artifactId>
            <version>${cucumber.version}</version>
        </dependency>

        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-spring</artifactId>
            <version>${cucumber.version}</version>
        </dependency>

        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-junit</artifactId>
            <version>${cucumber.version}</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>20.0</version>
        </dependency>

        <!--Selenium server dependency is for version 3 and up -->
        <!--https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-server -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-server</artifactId>
            <version>${selenium.version}</version>
        </dependency>

        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>${selenium.version}</version>
        </dependency>

        <dependency>
            <groupId>xml-apis</groupId>
            <artifactId>xml-apis</artifactId>
            <version>1.4.01</version>
        </dependency>

        <dependency>
            <groupId>org.javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.20.0-GA</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <executions>
                    <execution>
                        <configuration>
                            <executable>true</executable>
                            <attach>true</attach>
                        </configuration>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>
                <configuration>
                    <executable>true</executable>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

我在使用 Spring Boot 应用程序时遇到了完全相同的问题,我想将其用作 Cucumber 测试的运行程序。

问题在于 Spring Boot 以自己的方式重新打包所有内容,从而使默认的 Cucumber ResourceLoaders 很难找到任何 cucumber.runtime.Backend 类以及功能文件和步骤定义。

我最终做的是使用 Spring 特定类来搜索类路径来实现自定义 cucumber.runtime.io.ResourceLoader。 我的想法是在https://stackoverflow.com/a/17283721/3216618 https://stackoverflow.com/a/17283721/3216618

PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
String locationPattern = ... use path and suffix to 
Resource[] resources = resolver.getResources(locationPattern);

最后,您需要从找到的 org.springframework.core.io.Resource[] 创建一个 Iterable

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cucumber和Spring boot集成出现错误 的相关文章

随机推荐

  • jQuery DataTable 在按钮单击上设置标题

    在我看来 我有 2 个输入字段 1 个按钮和 1 个我正在使用的表格jQuery 数据表 https datatables net 我正在使用打印功能 https datatables net extensions buttons exam
  • 当用户名包含斜杠时,PuTTY PSCP 错误“不支持本地到本地复制”

    我正在尝试使用 PSCP 将文件从本地 Windows 计算机移动到远程 Linux 服务器 我已连接到 VPN 以便可以使用我的用户名和密码访问远程 Linux 计算机 我的 PSCP 传输命令是 pscp C Users usernam
  • 如何使用 XmlSerializer 反序列化到现有实例?

    是否可以使用 XmlSerializer 将其数据反序列化为类的现有实例而不是新实例 这在两种情况下会很有帮助 轻松地将两个 XML 文件合并到一个对象实例中 让对象构造器本身成为从 XML 文件加载其数据的构造器 如果默认情况下不可能 则
  • servlet 过滤器是否可以确定哪个 servlet 将处理请求

    我正在编写一个执行日志记录的过滤器 如果请求最终到达某个 servlet 我需要禁用此日志记录 有没有办法让过滤器知道哪个 servlet 将处理请求 您可能希望设置 servlet 过滤器映射 以便在请求特定 servlet 时不触发它
  • 如何在 Mac OS X 上启动 mongodb 服务?

    我已经在我的 Mac 上安装了 Mongodb 但该进程当前未运行 如何启动 Mongodb 服务以便可以开始使用命令 如果您使用自制程序在 macOS 上安装 MongoDB 请在终端中键入以下内容 在大多数情况下应该可以解决问题 bre
  • ROWNUM 在分页查询中如何工作?

    所以我想选择 Oracle DB 中的一系列行 我需要这样做 因为我的表中有数百万行 并且我想将结果分页给用户 如果您知道在客户端执行此操作的另一种方法 我正在使用 JavaFX 如果它很重要 但我不这样做认为通过网络发送所有数据以在客户端
  • IOS UIWebView:如何向 DOM 事件添加监听器?

    如何在 UIWebView 中添加 DOM 事件监听器 例如对于以下 html
  • 使

    在 Word 中 您可以将图像放置在页面上 并使文本在其周围流畅地排列 我想知道使用 CSS 可以达到什么程度 并指出它必须在 IE6 中工作 我已经使用浮动进行了某种关闭 但浮动子元素仍然 阻止 其上方的文本 所以它部分包裹 是否可以将子
  • 如何返回变量?

    我正在编写一个程序 将字母翻译成摩尔斯电码 然后将它们传输到 LED 并闪烁 我无法返回值 include
  • 如何使用 jQuery 创建“请稍候,正在加载...”动画?

    我想在我的网站上放置一个 请稍候 加载 旋转圆圈动画 我应该如何使用 jQuery 来完成这个任务 您可以通过各种不同的方式来做到这一点 它可能是微妙的 如页面上显示 正在加载 的小状态 也可能是大声的 如在加载新数据时整个元素使页面变灰
  • JavaScript 中 JSON.stringify() 的替代方案

    在 JavaScript 中 有哪些替代方案JSON stringify 对于没有本机 JSON 支持的浏览器 谢谢 你应该使用图书馆json2 js https github com douglascrockford JSON js 它是
  • Mysql:将数据数组存储在单列中

    并提前感谢您的帮助 嗯 这就是我的情况 我有一个网络系统 可以根据超声波计创建的样本进行一些与噪声相关的计算 最初 数据库只存储这些计算的结果 但现在 我还被要求存储样本本身 每个样本只是 300 或 600 个数字的列表 每个数字有 1
  • ValueError:“对象对于所需数组来说太深”

    我在 Python 程序中遇到 ValueError object too deep fordesired array 我在使用 numpy digitize 时遇到此错误 我认为这就是我使用 Pandas DataFrames 的方式 为
  • LinkedIn 有测试其 API 的平台吗?

    我找不到 Playground 或 API Explorer 来测试 Linkedin API 我在过去两年左右的时间里尝试过 但每次都放弃了 有吗 简单的答案是否定的 没有 API 浏览器或游乐场 BUT然而 linkedin 有一个测试
  • GCC:-static 和 -pie 与 x86 不兼容?

    我正在为 Android 5 0 重新编译一些可执行文件 因为它需要可执行文件PIE 我能够重新编译它ARM只需在配置时添加一些参数 使用独立工具链 export CFLAGS I softdev arm libs include fPIE
  • 使用数组条件跳出循环

    我目前正在为课堂制作一个滑道和梯子游戏 这场比赛的获胜条件是如果玩家落在 Square 100 上 他们就获胜 如果他们碰巧超过了 100 他们会一直呆在那里 直到每个人都完成游戏 要么有人达到 100 要么每个人都超过 100 如果每个人
  • 如何同步从LiveData获取值?

    For LiveData 有没有类似的东西blockingNext or blockingSingle在RxJava的Observable中同步获取值 如果没有 我怎样才能实现相同的行为 您可以致电getValue 返回当前值 如果有 但是
  • 为什么人们仍然在 Java 中使用原始类型?

    从 Java 5 开始 我们对原始类型进行了装箱 拆箱 以便int被包裹成java lang Integer 等等 我最近看到了很多新的 Java 项目 确实需要至少版本 5 如果不是 6 的 JREint而不是java lang Inte
  • 在 C++ 中用函数调用替换强制转换

    有关重构 替换强制转换的工具或方法的任何建议 例如 type data into convert to type data 当事情变得更加棘手时data其中有更高优先级的运算符 括号或换行符 type a b gt c 应该成为conver
  • Cucumber和Spring boot集成出现错误

    Spring boot和cucumber集成 当我将该项目打包为jar时 使用mvn package命令并生成advvic 1 0 jar 但是 如果我运行这个罐子 java jar target advvic 1 0 jar 我收到此错误