java maven项目testng执行时使用的是test-classes下的文件,共享main下方resource的配置
    在pom.xml中配置

    1. <!-- 共享main下面的resources文件-->
    2. <testResources>
    3. <testResource>
    4. <directory>${project.basedir}/src/test/resources/testData</directory>
    5. </testResource>
    6. <testResource>
    7. <directory>${project.basedir}/src/main/resources/testData</directory>
    8. </testResource>
    9. </testResources>
    1. // 服务端读取(非静态)
    2. InputStream in = this.getClass().getResourceAsStream("/properties/test.properties");
    3. Properties properties = new Properties();
    4. properties.load(in);
    5. properties.getProperty("name");
    6. // 服务端读取(静态)
    7. InputStream stream = Workbook.class.getResourceAsStream("/"+path);

    在执行测试时,注意其classpath是test-classes,需要在文件共享完成配置后才能访问到resources的文件,以target目录的结构为准

    1. // 以下两个返回路径不一样的,使用路径时需要注意
    2. String filepath = Workbook.class.getClassLoader().getResource("").getPath()
    3. // ClassLoader:/E:/coding/IFauto/target/test-classes/
    4. String filepath = Workbook.class.getResource("").getPath()
    5. //class:file:/C:/Users/user/.m2/repository/org/apache/poi/poi-ooxml/3.15/poi-ooxml-3.15.jar!/org/apache/poi/ss/usermodel/

    class.getClassLoader().getResourceAsStream() 和 class.getResouceAsStream() 的区别
    class.getClassLoader().getResourceAsStream(String name) 默认从classpath中找文件(文件放在resources目录下),name开头不能带”/“,否则会抛空指针。采用相对路径, “/“就相当于当前进程的根目录,即项目根目录;

    1. inStream = PropertiesTest.class.getClassLoader().getResourceAsStream("com/test/demo/test.properties");

    class.getResourceAsStream(String name) 是采用绝对路径,绝对路径是相对于 classpath 根目录的路径,”/“ 就代表着 classpath,所以 name 属性需要前面加上 “/“;

    1. inStream = PropertiesTest.class.getResourceAsStream("/com/test/demo/test.properties")