当前位置: 首页 > 知识库问答 >
问题:

Cucumber在编译为时无法在类路径上找到功能文件。战争

徐涵亮
2023-03-14

我正在尝试配置Cucumber测试,该测试将在。战争部署在JBoss上。该设置使用控制器启动cucumber干管。Cucumber需要胶水路径(-g)和特征文件路径的参数。通常,这些路径前面可能会有classpath:,和。特性文件(和步骤定义)由Cucumber正确标识(无论是在本地运行,还是在编译的.jar文件中)。然而,当编译成。war文件中,将引发以下异常:

java.nio.file.FileSystemNotFoundException: Provider "vfs" not installed

在调试项目时,Cucumber正在寻找以下功能

vfs:/C:/Users/{user}/EAP-7.1.0/bin/content/war-test-1.0-SNAPSHOT.war/WEB-INF/classes/features/

除了没有安装“vfs”之外,/bin/location中没有/content文件夹。在查找应如何加载资源位置中的文件时,以下操作有效:

InputStream is = getClass().getClassLoader().getResourceAsStream("/features/Test.feature");

但是,当我传递/features作为特征位置时,Cucumber会在C:/features中查找。我无权决定Cucumber如何加载其资源。是否有正确的方法通过功能路径,以便正确加载功能?

我准备了以下重新创建问题的基本项目:https://github.com/bgagnon93/cucumber-war

我正在本地的Red Hat JBoss EAP 7.1服务器上运行cucumber-war.war,在服务器上启动运行后,在localhost访问webapp:http://localhost:8080/cucumber-war-1.0-SNAPSHOT/

点击“开始”按钮将启动Cucumber,并导致故障。

以下是PortalController类中Cumber启动的样子:

@PostMapping("/")
public String run() {
    String[] cucumberArgs = {
            "-g", "classpath:com/automation/steps",
            "--tags", "@Test",
            "classpath:features"
    };
    Main.run(cucumberArgs, Thread.currentThread().getContextClassLoader());
    return "test";
}

是否有适当的方法来传递特征路径,以便正确加载特征?

共有1个答案

楚修为
2023-03-14

你提供了正确的路径。

Cucumber使用JSR203扫描功能文件。目前Apaches VFS不支持JSR203。不过,使用vfs2nio可能会有一些运气。

 类似资料:
  • 我已经安装了cucumber eclipse插件。我已经用空手道编写了我的简单功能文件,当我试图将其作为cucumber测试运行时,我被要求实现缺少的步骤。当我使用专用的运行程序运行同一个功能文件时,它的执行不会出现任何问题。请你帮忙。我正在尝试在不使用专用跑步者的情况下进行这项测试

  • 尝试在企业项目中进行PIT突变测试。让它做现有的JUNit测试,但我们也有很多Cucumber测试需要作为度量的一部分。在maven项目中添加了pit cucumber插件,但未找到任何场景。不确定插件的配置中是否有我看不到的秘密。 我得到以下输出: 信息:向minion发送0个测试类

  • 问题内容: 我不太确定是什么原因导致的,因为清单中正确列出了它: 我还添加了来构建路径,并将其移至的顶部,但是它仍然给我同样的错误。 编辑:我完全重建了该项目,并且无法重现该错误。不知道是什么原因造成的。 问题答案: 我的项目有同样的问题。这是由于我的项目与我在项目中添加的库项目之间的android支持库版本冲突而发生的。将相同版本的android支持库放入您的项目和包含的库项目中,并清理构建 …

  • 问题内容: 我目前正在一个项目中,我必须使用纯本地ndk。当我尝试从Irrlicht引擎源运行helloworld示例时,它起作用了。然后,按照该示例的相同格式尝试在我的项目中使用它。但是我得到了: 在运行我的项目时。 这是我的main.cpp文件: n Android.mk: 我在AndroidManifest.xml中给了Activity名称: 我在这里做什么错?如有必要,我将发布完整代码。

  • 我目前正在做一个项目,在这个项目中我必须使用纯原生的NDK。当我尝试从Irrlicht引擎源代码运行helloworld示例时,它起到了作用。然后我尝试在我的项目中使用它,遵循该示例的相同格式。但我得到: 在运行我的项目时。 并且我在AndroidManifest.xml中给出了活动名称: 我在这里犯了什么错误?如果需要,我会发布完整的代码。