我有一个maven项目,并且作为我的要求的一部分,我需要从Test类中读取文件,多数民众赞成在test文件夹内的目录之一中读取文件。
我的项目层次结构是这样的。
src
--test
---java
--org
--sample
--- MyTestClass.java
---jmeter
---load_data.csv
在MyTestClass.java中,我需要读取load_data.csv。到目前为止,我对File和Path的试用都未获得结果
file.exists()总是给我假...我如何找到该文件并读取它
致谢
答案 0 :(得分:0)
假设项目的根是src
的父项,那么您的路径应为:
Paths.get("src", "test", "jmeter", "load_data.csv")
答案 1 :(得分:0)
问题是2折。如何从Maven访问文件,第二如何从班级访问文件。我假设您的Maven构建失败,因为由于缺少文件而无法通过测试。
快速而肮脏的方式:
输入完整路径。根据操作系统的不同,导航至终端中的文件并键入(OSX和nix):“ pwd”,然后将完整路径复制并粘贴到新File()中 Windows:回显%cd% 要么 How to construct a relative path in Java from two absolute paths (or URLs)?
更好的方法: 您可能应该在资源中添加该文件。按照惯例,您要将资源放置在该文件夹中。它使您可以轻松地在类内部访问class.getResource(“ somefile.txt”),而无需担心相对路径。 当您分发程序时,它也会添加到您的jar中。 档案结构: 约定src-> main-> resources-> load_data.csv
在您的情况下src->测试->资源-> load_data.csv
现在如何从Maven引用资源。下面的构建过程中的困难方法是从Maven文档https://maven.apache.org/plugins/maven-resources-plugin中添加资源。
<executions>
<execution>
<id>copy-resources</id>
<!-- here the phase you need -->
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/extra-resources</outputDirectory>
<resources>
<resource>
<directory>src/non-packaged-resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
如果您不希望testResources成为主发行版的一部分,则需要添加测试配置文件并将其从主阶段/构建中排除。更多文档https://maven.apache.org/plugins/maven-resources-plugin/testResources-mojo.html
答案 2 :(得分:-2)
在load_data.csv
中添加src/test/resources/
并进行相应查询