Maven jar无法从src / test / resources文件夹中读取TestData表中的数据

时间:2016-02-05 06:48:48

标签: maven selenium excel-2010 testng

我有一个使用selenium和testng开发的maven测试自动化项目。 这就是我对我的框架所做的事情:

  1. 我在src / main / java中有主类,在主类中我触发了动态创建和运行testng xml的方法。
  2. 要运行的测试是根据src / test / resources中的XMLFlag.xls和TestNG.xlsx表确定的。
  3. 我能够使用" mvn test"成功运行测试脚本。命令。
  4. 现在我想通过创建一个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从这些表中读取所需的测试数据并执行脚本。

    谢谢。

2 个答案:

答案 0 :(得分:0)

Maven区分了compiliation和test src / main / resources以及src / test / resources之间的资源,你有资源作用域测试并交给类范围编译:

  1. 解决方案是移动src / main / resources中的2个文件并进行调用:

    String file = "src/main/resources/XMLFlag.xls";
    FileInputStream stream1 = new FileInputStream (file1);
    
  2. 第二个解决方案更有价值的是不要在src / test / java和资源中创建测试类作为您的类并使用相同的测试范围,即目标/测试类

答案 1 :(得分:0)

首先,在创建jar时,只会出现来自src/main/resourcessrc/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文件中的内容)。