有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正在尝试配置Cucumber测试,该测试将在内部运行。战争部署在JBoss上。此设置使用控制器启动黄瓜干管。Cucumber需要用于粘合路径(-g)和特征文件路径的参数。通常,这些路径前面可能有类路径:,和。特性文件(和步骤定义)由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服务器上的war。在服务器上启动运行后,将在本地主机上访问webapp: http://localhost:8080/cucumber-war-1.0-SNAPSHOT/

单击“开始”按钮将启动Cumber,并导致故障

以下是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) 个答案

  1. # 1 楼答案

    您正在提供正确的路径

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