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 楼答案
您正在提供正确的路径
Cucumber使用JSR203扫描功能文件。目前Apaches VFS不支持JSR203。不过,您可能在vfs2nio方面有一些运气