【问题标题】:Default working directory for JUnit test - how can we define it consistently in Eclipse?JUnit 测试的默认工作目录 - 我们如何在 Eclipse 中一致地定义它?
【发布时间】:2019-10-05 17:10:39
【问题描述】:

根据documentation

默认情况下,java.io 包中的类总是解析相对的 当前用户目录的路径名。此目录名为 通过系统属性 user.dir,通常是 调用了哪个 Java 虚拟机。

因此,根据它,如果我从弹出菜单中运行一个 JUnit 类,选择 JUnit 测试,则当前文件夹应该是测试类所在的文件夹。

但实际上它从运行配置页面的默认工作目录 - 环境页面用于最后使用的运行配置。因此,如果测试使用具有相对路径的文件,则大多数情况下它无法从弹出菜单中正确启动。

即使我为 JUnit 测试类创建了运行配置,是的,它会自动将其默认工作目录(在运行配置 - 环境页面)设置为测试文件所在的文件夹。但仍然,通过弹出菜单使用,它再次从上次使用的运行配置中获取默认工作目录。

如何设置默认目录或 Eclipse,以便我可以根据文档使用当前文件夹启动我的测试类?

【问题讨论】:

    标签: java eclipse junit directory


    【解决方案1】:

    您没有提供您尝试做什么的示例,但我猜您尝试加载一些您在测试中需要的文件。如果是这种情况,您最好更改加载文件的方式。

    YourTestClass.class.getResource("filename")YourTestClass.class.getResourceAsStream("filename") 是您应该使用的。它查找与YourTestClass 相关的文件。

    【讨论】:

    • 如果您使用诸如 maven/gradle 之类的构建工具,这种方法也是正确的,因为您可以将文件放在 src/test/resources 中的某个位置并使用正确的路径调用它只是总是工作......
    • 感谢您的回答和编辑,但我对如何使用默认目录非常感兴趣。请注意,我不是在寻找 Java 解决方案。我正在寻找 Java+Eclipse 解决方案。 Eclipse 和 Java 都以某种方式支持默认文件夹。我正在尝试以某种有用的方式做到这一点。
    • 顺便说一句,通过 class.getResource() 或 .class.getProtectionDomain().getCodeSource().getLocation() 的另一种方式,在 SO 上广泛呈现,只能在插件或任何其他插件中正常工作带有额外类加载器的结构。
    猜你喜欢
    • 2010-09-12
    • 1970-01-01
    • 2018-01-19
    • 2011-03-06
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 2016-09-18
    相关资源
    最近更新 更多