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

新手上路,请多包涵

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

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

但是我怎样才能获得 src/test/resources 目录 的完整路径,即我不想加载文件,我只想知道目录的路径?

原文由 Rory 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.6k
2 个回答

尝试使用 ClassLoader 类:

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

A ClassLoader 负责加载类。每个类都有对 ClassLoader 的引用。此代码从资源目录返回 File 。调用 getAbsolutePath() 返回其绝对值 Path

Javadoc ClassLoaderhttp ://docs.oracle.com/javase/7/docs/api/java/lang/ClassLoader.html

原文由 ashosborne1 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

Maven 在运行测试之前自动设置当前工作目录,所以你可以使用:

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

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

如果您希望测试通过文件系统访问数据,我建议创建一个 src/test/data 目录。这使您清楚地知道您在做什么。

原文由 Steve C 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题