我有一个使用selenium和testng开发的maven测试自动化项目。 这就是我对我的框架所做的事情:
现在我想通过创建一个jar来运行我的整个项目。 我能够使用" maven-assembly-plugin"创建一个包含所有依赖项的jar。但我无法运行脚本,因为未识别src / test / resources中的测试数据表。
我收到如下错误消息: -
错误消息:。\ src \ test \ resources \ XMLFlag.xls(系统不能 找到指定的路径)
你们能帮助我吗? Project Structure
我在代码中提到了XMLFlag.xls和TestNG.xlsx的路径,如下所示:
FileInputStream fis = new FileInputStream(".\\src\\test\\resources\\XMLFlag.xls");
FileInputStream fis = new FileInputStream(".\\src\\test\\resources\\TestNG.xlsx");
我希望jar从这些表中读取所需的测试数据并执行脚本。
谢谢。
答案 0 :(得分:0)
Maven区分了compiliation和test src / main / resources以及src / test / resources之间的资源,你有资源作用域测试并交给类范围编译:
解决方案是移动src / main / resources中的2个文件并进行调用:
String file = "src/main/resources/XMLFlag.xls";
FileInputStream stream1 = new FileInputStream (file1);
第二个解决方案更有价值的是不要在src / test / java和资源中创建测试类作为您的类并使用相同的测试范围,即目标/测试类
答案 1 :(得分:0)
首先,在创建jar时,只会出现来自src/main/resources
和src/main/java
的文件。我建议您将资源从src/test/resources
移至src/main/resources
。您还可以配置maven-jar-plugin
以包含文件,但需要更多配置。在src/main
中拥有测试和测试源是不可能的。
其次,一旦装在一个罐子里,路径src/<whatever>/resources
变得无关紧要。您需要使用类加载器加载文件;否则你需要手动拆开你的罐子并从解压缩的位置加载文件
由于来自src/main/resources
的文件出现在jar文件的根目录中,因此要加载文件,只需执行
InputStream stream = YourClassName.class.getResourceAsStream("XMLFlag.xls");
请注意,YourClassName
应替换为您的班级名称
另请注意,您无法使用FileInputStream
,因为您没有访问文件(只是包装在jar文件中的内容)。