现象:
正常运行及手动运行单元测试时,FileInputStream都能找到相对路径文件。(文件在与项目位于同一个父目录)但执行maven test的时候,就提示找不到这个文件。
String jtrServerCfgFilePath = "./cfgs/jtr-ts-s-cfg.xml";
new FileInputStream(jtrServerCfgFilePath)
解决办法:
修改pom文件,指定工作目录
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<!--设置工作目录为项目基础目录的上级目录,以便顺利读取到相对路径文件-->
<workingDirectory>..</workingDirectory>
</configuration>
</plugin>
分析
不指定工作目录时,它可能发生变化,比如正常运行时工作目录为项目所在目录,而maven test时它就变成了项目目录本身,因为工作目录变了,所以相对路径文件也就找不到了。