当前位置: 首页 > 知识库问答 >
问题:

如何获取JUnit中src/test/resources目录的路径?

鲜于俊侠
2023-03-14

我知道我可以从src/test/resources加载一个文件:

getClass().getResource("somefile").getFile()

但是如何获得src/test/resources目录的完整路径,即我不想加载一个文件,我只想知道目录的路径?

共有3个答案

彭俊智
2023-03-14

我将简单地使用Java 7中的path

Path resourceDirectory = Paths.get("src","test","resources");

整洁干净!

孔建柏
2023-03-14

你不需要搞乱类加载器。事实上,这是一个坏习惯,因为类加载器资源在jar存档中时不是java.io.file对象。

Maven在运行测试之前会自动设置当前的工作目录,因此您只需使用:

    File resourcesDirectory = new File("src/test/resources");

resourcesdirectory.getAbsolutePath()将返回正确的值,如果这是您真正需要的值。

如果希望测试通过文件系统访问数据,我建议创建src/test/data目录。这说明你在做什么。

祁雪峰
2023-03-14

尝试使用ClassLoader类:

ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("somefile").getFile());
System.out.println(file.getAbsolutePath());

一个类加载器负责在类中加载。每个类都有对classloader的引用。此代码从资源目录返回一个文件。对其调用getAbsolutePath()将返回其绝对路径

用于类加载器的Javadoc:http://docs.oracle.com/javase/7/docs/api/java/lang/classloader.html

 类似资料:
  • 我有两个包含java代码和资源的工作目录,一个用于测试,另一个用于生产。 src/main/java src/main/resources src/test/java src/test/resources 当运行我的代码并从FileInputStream读取文件时,如下所示: 只要文件位于项目的根目录中,就可以正常工作。如果我将文件放在资源文件夹中并直接指向它,它也可以工作,如下所示: 有没有办法

  • 我想从maven资源目录(src/main/resources)中读取我的属性文件。属性文件的路径称为: 该文件名为test。财产。我使用了JSF2.2、Eclipse和Java Web项目,webapp在Tomcat7上运行 我在mavenpom.xml文件中写道: 并在我的java文件中写入:Properties prop=new Properties(); 但是它没有找到属性文件。我可以读出

  • 我在论坛上搜索了我的问题的答案,但我找不到。我的问题是: 我有两个项目:项目A和项目B。ProjectB使用ProjectA。在ProjectA中,我有两个文件夹:/src/main/resources和/src/test/resource。在ProjectB中,我运行:mvn clean install。我希望,在测试阶段,ProjectB中的类使用/src/test/resources中的资源

  • 我有一个java,gradle项目。我的少年 选择一些配置 Junit中拾取此文件的代码是 当我奔跑时 这个很好用。Junit能够从csv文件中拾取数据。 当我在Eclipse中运行JUnit时,即通过Shift Alt X T,然后JUnit以空指针异常中断。 我明白原因。当我在eclipse中运行Junit时,它会在同一个文件夹中查找该文件,但没有找到它,因此失败。但是,当我使用gradle运

  • 假设标准maven设置。 在Java中,我如何获得文件的绝对路径?

  • 我有一个目录结构如下的maven模块,我想在中获取的路径 我使用进行了尝试,但它给出了一个空值。 无法获取资源的路径